Android星级评分条控件RatingBar使用详解

发布时间 - 2026-01-11 01:46:29    点击率:

Android开发中,时不时的就有要实现星星的评分效果,比如某宝,某团,相信大家也都见过,当然了我们可以自己去画,也可以用美工给切的图去实现,其实在Android原生的控件中就可以来实现这样的效果,它就是RatingBar。
来,我们先看一张图(只在代码中引入了控件)

实现效果如下图:

我们先看一下它的继承关系:这玩意和SeekBar的类结构是一样的,也是ProgressBar的子类

相关属性:

android:isIndicator:是否用作指示,用户无法更改,默认false
android:numStars:显示多少个星星,必须为整数
android:rating:默认评分值,必须为浮点数
android:stepSize: 评分每次增加的值,必须为浮点数
除了上面这些,还有两种样式供我们选择咧,但是不建议使用,因为这两种样式都好丑... 他们分别是:
style="?android:attr/ratingBarStyleSmall"
style="?android:attr/ratingBarStyleIndicator"
事件处理: 只需为RatingBar设置OnRatingBarChangeListener事件,然后重写下onRatingChanged()方法即可!
实现代码如下:

public class MainActivity extends AppCompatActivity {
 private RatingBar rb_normal;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 rb_normal = (RatingBar) findViewById(R.id.rb_normal);
 rb_normal.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
  @Override
  public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
  Toast.makeText(MainActivity.this, "rating:" + String.valueOf(rating),
   Toast.LENGTH_LONG).show();
  }
 });
 }
}

自定义样式阶段:
接下来和前面的SeekBar一样编写一个layer-list的文件:
ratingbar_full.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:id="@android:id/background"
 android:drawable="@mipmap/ic_rating_off1" />
 <item android:id="@android:id/secondaryProgress"
 android:drawable="@mipmap/ic_rating_off1" />
 <item android:id="@android:id/progress"
 android:drawable="@mipmap/ic_rating_on1" />
</layer-list> 

接着在style.xml中自定义下RatingBar Style,在style.xml加上这个:

<style name="roomRatingBar" parent="@android:style/Widget.RatingBar">
 <item name="android:progressDrawable">@drawable/ratingbar_full</item>
 <item name="android:minHeight">24dip</item>
 <item name="android:maxHeight">24dip</item>
 </style>

最后在布局中的Ratingbar组件设置下:

<RatingBar
 android:id="@+id/rb_normal"
 style="@style/roomRatingBar"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />

可以实现效果如下图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # RatingBar  # 评分  # Android开发之自定义星星评分控件RatingBar用法示例  # Android RatingBar星星评分控件实例代码  # Android自定义控件RatingBar调整字体大小  # Android开发手册RatingBar星级评分控件实例  # 自定义  # 先看  # 如下图  # 浮点数  # 子类  # 就有  # 见过  # 两种  # 可以用  # 只需  # 我们可以  # 也都  # 只在  # 可以实现  # 这两种  # 来实现  # 中就  # 大家多多  # 多少个  # 一张图 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 北京网站制作公司哪家好一点,北京租房网站有哪些?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  如何撰写建站申请书?关键要点有哪些?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  如何用IIS7快速搭建并优化网站站点?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  高防服务器租用指南:配置选择与快速部署攻略  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  如何在万网利用已有域名快速建站?  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  如何在IIS中新建站点并解决端口绑定冲突?  如何在IIS中新建站点并配置端口与物理路径?  iOS验证手机号的正则表达式  详解Android——蓝牙技术 带你实现终端间数据传输  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel如何与Inertia.js和Vue/React构建现代单页应用  Laravel如何使用Gate和Policy进行授权?(权限控制)  Android利用动画实现背景逐渐变暗  昵图网官网入口 昵图网素材平台官方入口  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何在局域网内绑定自建网站域名?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  如何快速重置建站主机并恢复默认配置?  如何在云服务器上快速搭建个人网站?  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  Laravel如何使用Service Container和依赖注入?(代码示例)  教你用AI将一段旋律扩展成一首完整的曲子  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何在宝塔面板中创建新站点?  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  html如何与html链接_实现多个HTML页面互相链接【互相】  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  如何在腾讯云服务器上快速搭建个人网站?  如何在Windows 2008云服务器安全搭建网站?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  网站制作免费,什么网站能看正片电影?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  如何在云主机上快速搭建多站点网站?  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  *服务器网站为何频现安全漏洞?