Android AppCompatRatingBar 科普

简介

Android AppCompatRatingBar 是 Android 支持库中的一个组件,用于显示评分、打分等需求。AppCompatRatingBar 继承自 RatingBar,但在外观上更加符合当前的 Material Design 风格。它可以在 Android 2.1 (API 级别 7) 或更高版本的设备上使用,并且与其他 AppCompat 组件兼容。本文将向您介绍如何使用 AppCompatRatingBar 并提供代码示例。

一、添加依赖

在使用 AppCompatRatingBar 之前,我们需要在项目的 build.gradle 文件中添加以下依赖:

implementation 'androidx.appcompat:appcompat:1.4.0'

二、使用 AppCompatRatingBar

AppCompatRatingBar 的使用方式与 RatingBar 类似。以下是一个简单的示例:

<androidx.appcompat.widget.AppCompatRatingBar
    android:id="@+id/ratingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:numStars="5"
    android:rating="3.5"
    app:ratingBarStyle="?attr/ratingBarStyleIndicator"
    />

在上面的示例中,我们创建了一个 AppCompatRatingBar,并设置了一些属性。下面是示例中用到的属性解释:

  • android:numStars:设置星星的数量,默认为 5 颗。
  • android:rating:设置当前的评分值,默认为 0。
  • app:ratingBarStyle:设置评分条的样式,可以使用 ?attr/ratingBarStyleIndicator 来使用系统默认的样式。

三、监听评分变化

如果我们需要监听评分的变化,可以通过添加 OnRatingBarChangeListener 来实现。以下是一个示例:

AppCompatRatingBar ratingBar = findViewById(R.id.ratingBar);
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
    @Override
    public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
        // 在这里处理评分变化的逻辑
        Log.d("RatingBar", "Rating changed: " + rating);
    }
});

在上面的示例中,我们通过 setOnRatingBarChangeListener 方法设置了一个评分变化的监听器,当评分发生变化时,会触发 onRatingChanged 方法,并传递当前的评分值和是否是用户操作的标志。

四、自定义样式

如果默认的样式无法满足需求,我们还可以自定义 AppCompatRatingBar 的样式。以下是一个自定义样式的示例:

<style name="CustomRatingBar" parent="Widget.AppCompat.RatingBar">
    <item name="android:progressDrawable">@drawable/custom_rating_bar</item>
</style>

在上面的示例中,我们创建了一个名为 CustomRatingBar 的样式,并指定了 android:progressDrawable 属性,它引用了一个自定义的评分条样式。接下来,我们需要创建 custom_rating_bar.xml 文件来定义自定义的样式:

<layer-list xmlns:android="
    <item android:id="@android:id/background"
        android:drawable="@drawable/custom_rating_bar_bg" />
    <item android:id="@android:id/secondaryProgress"
        android:drawable="@drawable/custom_rating_bar_secondary" />
    <item android:id="@android:id/progress"
        android:drawable="@drawable/custom_rating_bar_progress" />
</layer-list>

在上面的示例中,我们使用了 layer-list 来定义了评分条的三个状态:背景、次级进度和主要进度。我们需要分别创建 custom_rating_bar_bg.xmlcustom_rating_bar_secondary.xmlcustom_rating_bar_progress.xml 这三个文件,并设置它们的样式。

五、总结

通过本文,您已经了解了 Android AppCompatRatingBar 的基本用法和一些常见的属性。您可以根据自己的需求来使用 AppCompatRatingBar,并根据需要自定义样式。希望本文能对您有所帮助。

参考资料

  • [Android Developers: RatingBar](
  • [Android Developers: AppCompatRatingBar](