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


相关推荐: 宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  韩国服务器如何优化跨境访问实现高效连接?  如何获取上海专业网站定制建站电话?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  Laravel如何与Pusher实现实时通信?(WebSocket示例)  如何用好域名打造高点击率的自主建站?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何在云指建站中生成FTP站点?  如何快速搭建高效WAP手机网站吸引移动用户?  🚀拖拽式CMS建站能否实现高效与个性化并存?  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  如何快速生成高效建站系统源代码?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  如何在万网自助建站平台快速创建网站?  如何做网站制作流程,*游戏网站怎么搭建?  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Laravel如何保护应用免受CSRF攻击?(原理和示例)  如何快速生成专业多端适配建站电话?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  如何在IIS中配置站点IP、端口及主机头?  如何在Windows虚拟主机上快速搭建网站?  黑客入侵网站服务器的常见手法有哪些?  南京网站制作费用,南京远驱官方网站?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Android自定义控件实现温度旋转按钮效果  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  php485函数参数是什么意思_php485各参数详细说明【介绍】  QQ浏览器网页版登录入口 个人中心在线进入  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  网站建设整体流程解析,建站其实很容易!  原生JS获取元素集合的子元素宽度实例  微信公众帐号开发教程之图文消息全攻略  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Laravel安装步骤详细教程_Laravel环境搭建指南  制作电商网页,电商供应链怎么做?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何在不使用负向后查找的情况下匹配特定条件前的换行符  详解jQuery中的事件  海南网站制作公司有哪些,海口网是哪家的?  制作旅游网站html,怎样注册旅游网站?