📜  Android RatingBar示例(1)

📅  最后修改于: 2023-12-03 14:59:15.285000             🧑  作者: Mango

Android RatingBar示例

在Android中,我们可以使用RatingBar控件来实现评分功能。RatingBar控件可以让用户按一定数量来评分,通常用于电影、酒店等应用。

基本使用

RatingBar控件可以在布局文件中定义,如下所示:

<RatingBar
    android:id="@+id/rating_bar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:rating="3.5"
    android:numStars="5"
    android:stepSize="0.5"
    android:isIndicator="false"/>

以上代码创建了一个简单的RatingBar控件,它的默认评分是3.5,最多5颗星,每次评分的增长单位为0.5,用户可以对其进行操作。isIndicator属性表示是否只用于显示评分。

监听评分改变

如果我们想要在评分发生改变时做出一些响应,可以通过设置OnRatingBarChangeListener监听器来实现。首先我们需要在Java代码中获取RatingBar控件的实例,如下所示:

RatingBar ratingBar = (RatingBar) findViewById(R.id.rating_bar);

然后我们可以为其设置OnRatingBarChangeListener监听器,如下所示:

ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
    @Override
    public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
        // do something
    }
});

其中,onRatingChanged()方法会在评分发生改变时被调用,参数rating表示当前评分值,fromUser表示此次改变是否是用户操作导致的。我们可以在此方法中实现自己的响应操作。

自定义样式

我们可以通过设置属性或者编写样式来自定义RatingBar的样式。例如,我们可以将RatingBar的星星替换为其他图案,如圆、心等。

首先,我们需要编写一个drawable资源文件来替换星星的图案,例如以下代码创建了一个heart.xml文件来替换星星:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@drawable/ic_heart_selected" />
    <item android:state_selected="false" android:drawable="@drawable/ic_heart_unselected" />
</selector>

然后,我们可以在RatingBar控件中设置该drawable资源文件,如下所示:

<RatingBar
    android:id="@+id/rating_bar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:rating="3.5"
    android:numStars="5"
    android:stepSize="0.5"
    android:progressDrawable="@drawable/rating_bar_custom"
    android:isIndicator="false"/>

在上述代码中,我们通过设置progressDrawable属性来指定我们自定义的drawable资源文件。

总结

本文介绍了Android中RatingBar控件的基本使用、监听评分改变以及自定义样式等内容。我们可以根据自己的需要来设置RatingBar的属性和样式,以及在评分改变时响应自己的操作。