Android星级评分条控件RatingBar

2023-11-13

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" />
可以实现效果如下图:



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android星级评分条控件RatingBar 的相关文章

随机推荐

  • 《Python核心编程》读书笔记

    第一章 Python对象 1 1 Python对象 Python使用对象模型来存储数据 所有的Python对象都有三个特性 身份 类型和值 身份可以使用内建函数id 得到 类型可以使用内建函数type 查看 1 2 标准类型 数字 整形 I
  • WGS84的理解

    转载 https support virtual surveyor com en support solutions articles 1000261351 what is wgs84 text When 20you 20determine
  • Xilinx AXI VIP使用教程

    Xilinx提供了用于验证AXI相关设计的AXI VIP AXI Verification IP 它可以对自己设计的AXI接口模块进行全方位的验证 如使用VIP的Master Passthrough Slave三种模式对自己写的AXI接口进
  • 宝塔面板登录失败

    这是七月初出现的宝塔面板登录问题 如下 登录界面一直在转圈圈 只是最近两周在写项目和刷算法题 无暇顾及这个问题 现在给出解决方法 2023 07 24午 首先保证网络环境良好 手机热点很不靠谱的 最好是直连路由器 家里的或者学校宿舍的 其实
  • 面板数据实证过程-基于政府补贴对企业研发投入的影响分析

    一 数据来源 国泰安CSMAR 二 数据对象 同花顺BKDC26股票 新能源板块 内所有上市公司 剔除ST及数据缺失的公司 三 年份选取 2016 2019年 四 变量列举 变量表 被解释变量 RDratio 企业研发投入程度 主解释变量
  • 如何调用高德地图api

    首先注册成为高德地图开发者 创建应用后申请key 1 引入高德地图API 2 创建地图容器 div div width 300px height 180px 指定大小样式 3 创建默认地图 方式一 var map new AMap Map
  • 饥荒专用服务器全图显示代码,饥荒地图怎么看 饥荒地图全开代码

    最近很多玩家表示在玩 饥荒 的时候 经常会有遇到各种各样的问题 比如新建一个世界然后辛辛苦苦跑完整张地图 结果发现世界里没猪王 整个地图居然没有六眼飞虫雕像 猪王雕像地洞各种靠的近 结果发现全图没海象 小编今天为各位玩家带来了一些解决问题的
  • mysql的全量备份和增量备份

    文章目录 全量备份 1 创建mysqldump脚本 1 1 找一个目录 这里选择放到 data mysqlbackup下 创建shell脚本 1 2 添加内容 1 3给脚本赋予执行权限 2 crontab 2 1查看cron状态 2 1创建
  • GTX1660TI 算力

    7 5
  • 前端面试题 vue专项,共计58道

    vue篇 1 什么是MVVM 2 Vue声明周期 3 为什么vue中data必须是一个函数 4 vue router有几种导航钩子 5 Vue的v show和v if区别 6 vue loader是什么 使用它的用途有哪些 7 计算属性和w
  • 使用Opencv+SVM+Hog进行行人识别的代码

    OpenCV include
  • CLOUD 云计算进阶(二)- openstack 服务搭建与应用

    什么是云计算 基于互联网的相关服务的增加 使用和交互模式 这种模式提供可用的 便捷的 按需的网络访问进入可配置的计算机网络共享池 这些资源能够被快速提供 只投入很少的管理工作 或者与服务供应商进行很少的交互 通常通过互联网来提供动态易拓展且
  • python绘制散点图和折线图

    散点图 一般和相关分析 回归分析结合使用 import pandas import matplotlib import matplotlib pyplot as plt plot circle pandas read csv D Pytho
  • webUI自动化图片验证码登录、服务器自动登录、复用已打开浏览器登录(动态验证码或扫码登录)

    接上一篇
  • 软件外包开发流程分析

    软件系统的开发过程分为需求分析 设计 开发 测试 部署 上线和运维共七个阶段 每个阶段都有大量的工作要做 随着软件规模越来越大 科学的管理这个流程非常重要 管理不好就可能会导致项目最终失败 今天和大家分享软件开发流程 希望对大家有所帮助 北
  • ROS下使用乐视RGB-D深度相机/Orbbec Astra Pro显示图像和点云

    ROS下使用乐视RGB D深度相机显示图像和点云 1 正常安装 1 1 安装依赖 1 2 建立工作空间 1 3 克隆代码 1 4 Create astra udev rule 1 5 编译源码包 1 6 修改astrapro launch
  • C++(9)——引用计数实现写时拷贝(包含String类的实现)

    在之前的学习中 我们谈到了字符串的深拷贝与浅拷贝 在浅拷贝中 由于多个对象共用同一块内存空间 导致同一块空间被释放多次而出现问题 那能否保证 当多个对象共享一块空间时 该空间最终只释放一次呢 这就是我们接下来要谈的问题 使用浅拷贝不浪费内存
  • 快速排序之“采取“尾递归”和“三数取中”技术的快速排序”

    快速排序之 采取 尾递归 和 三数取中 技术的快速排序 下面针对快速排序进行一些优化 QUICKSORT算法包含两个对其自身的递归调用 即调用PARTITION后 左边的子数组和右边的子数组分别被递归排序 QUICKSORT中的第二次递归调
  • 微信创建公众号菜单

    1 地址 https mp weixin qq com debug cgi bin apiinfo t index type E8 87 AA E5 AE 9A E4 B9 89 E8 8F 9C E5 8D 95 form E8 87 A
  • Android星级评分条控件RatingBar

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