news 2026/4/28 19:10:15

Android 基础入门教程之RatingBar(星级评分条)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android 基础入门教程之RatingBar(星级评分条)

2.3.9 RatingBar(星级评分条)

分类Android 基础入门教程

本节引言:

上一节的SeekBar是不是很轻松咧,本节我们学的这个RatingBar(星级评分条)也非常简单,相信在某宝, 买过东西的对这个应该不陌生,收到卖家的包裹,里面很多时候会有个小纸片,五星好评返还多少元这样, 而评分的时候就可以用到我们这个星级评分条了~先来瞅瞅官方文档 官方文档:RatingBar 我们可以看到,这玩意和SeekBar的类结构是一样的,也是ProgressBar的子类:

也就是说他同样有用ProgressBar的相关属性,接下来我们来探究RatingBar特有的属性!


1.RatingBar基本使用:

先来看看5.0的原生SeekBar长什么样:

——相关属性:

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(); } }); } }

2.定制环节:

嘿嘿,我们很多时候不会用星星作为评分标准的,我们来改改呗~ 把星星改成其他的,比如笑脸,两个素材:

接下来和前面的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" />

运行效果图:

好的,效果还可以哈,至于间距问题,就需要对图片坐下处理了,就是需要切图的时候在图片左右预留点空格~!


本节小结:

好的,关于RatingBar的使用就到这里,和前面的SeekBar其实大同小异,蛮轻松的~嗯,谢谢~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 21:06:00

隐私保护新趋势:AI自动打码技术深度剖析

隐私保护新趋势&#xff1a;AI自动打码技术深度剖析 1. 引言&#xff1a;AI驱动的隐私保护新范式 随着社交媒体、云相册和智能监控的普及&#xff0c;个人图像数据正以前所未有的速度被采集与传播。一张合照中可能包含多个个体的面部信息&#xff0c;传统手动打码方式不仅效率…

作者头像 李华
网站建设 2026/4/28 9:25:32

智能打码系统优化教程:AI人脸隐私卫士高级部署

智能打码系统优化教程&#xff1a;AI人脸隐私卫士高级部署 1. 引言 1.1 业务场景描述 在社交媒体、企业宣传、新闻报道等场景中&#xff0c;图像内容的发布越来越频繁。然而&#xff0c;未经处理的人物面部信息可能带来严重的隐私泄露风险&#xff0c;尤其是在多人合照或公共…

作者头像 李华
网站建设 2026/4/25 21:03:27

本地运行的人脸打码工具推荐:免配置镜像开箱即用

本地运行的人脸打码工具推荐&#xff1a;免配置镜像开箱即用 1. 背景与需求&#xff1a;AI时代下的隐私保护新挑战 随着智能手机和社交平台的普及&#xff0c;照片分享已成为日常。然而&#xff0c;一张看似普通的合照中可能包含多位人物的面部信息——一旦上传至公共网络&am…

作者头像 李华
网站建设 2026/4/24 19:37:44

智能打码系统优化:提升多人检测能力

智能打码系统优化&#xff1a;提升多人检测能力 1. 背景与挑战&#xff1a;隐私保护在多人场景中的技术瓶颈 随着社交媒体和数字影像的普及&#xff0c;个人照片中常常包含多个主体&#xff0c;尤其在会议合影、家庭聚会、校园活动等场景下&#xff0c;多人脸图像的隐私保护需…

作者头像 李华
网站建设 2026/4/24 16:46:47

Nodejs和vue框架的水果购物商城管理系统的设计与实现thinkphp

文章目录Node.js与Vue框架的水果购物商城管理系统设计摘要ThinkPHP框架的水果商城管理系统设计摘要--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;Node.js与Vue框架的水果购物商城管理系统设计摘要 该系统采用前后…

作者头像 李华
网站建设 2026/4/27 22:46:12

Windows远程桌面多用户终极方案:RDP Wrapper专业级部署指南

Windows远程桌面多用户终极方案&#xff1a;RDP Wrapper专业级部署指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows系统远程桌面的单用户限制而困扰&#xff1f;想要实现多用户同时访问却不知如何…

作者头像 李华