引言

上一篇的CheckBox已经让大家越来越接近实战演练了,本章我们继续分享干货给大家,今天介绍一个实用的UI控件RatingBar(星级评分条),对于使用过电商APP(某东,某宝等)的小伙伴们来说,应该不会陌生。在对商品进行评价时,经常会出现五星好评的评分样式,这个五星评分样式就是今天的主角RatingBar

简介

RatingBar:用于评分和展示的星级评分控件。

public class RatingBar extends AbsSeekBar

java.lang.Object
↳ android.view.View
↳ android.widget.ProgressBar
↳ android.widget.AbsSeekBar
↳ android.widget.RatingBar

由上面的继承结构可以看出,RatingBar是基于SeekBarProgressBar的扩展。

基本使用

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<RatingBar
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</LinearLayout>

在项目里直接放一个RatingBar,看下运行效果:

可以看出,系统给我们提供了一套默认的样式与代码逻辑,如果想实现我们自己的样式逻辑,可在此基础上进行修改。

XML常用属性

android:isIndicator:是否用作指示,即用户是否可点击更改,默认false(可点击)。

android:numStars:显示多少个星星,必须为整数。

android:rating:默认评分值,必须为浮点数。

android:stepSize: 评分每次增加的值,必须为浮点数。

除了上面这些,系统还为我们提供了三种样式,供我们选择:

使用示例:

上面介绍系统提供的三种样式,主要是改变星星的大小,如果需要使用其他样式,还需要进行自定义,方式如下:

1.在drawable下编写一个layer-list文件ratingbar_layer

<?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="@drawable/rating_off"/>
<item android:id="@android:id/progress"
android:drawable="@drawable/rating_on"/>
</layer-list>

注意drawable中引用的图片,需要根据设计图尺寸,放在不同屏幕密度的drawable文件夹下,用于屏幕适配。

2.在values文件夹下styles.xml文件中添加style样式。

<style name="my_ratingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/ratingbar_layer</item>
<item name="android:minHeight">24dp</item>
<item name="android:maxHeight">24dp</item>
</style>

  

3.在xml布局里进行使用。

<RatingBar
android:id="@+id/ratingbar"
style="@style/my_ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:rating="3"
android:stepSize="1" />

监听处理

很多时候,我们还需要对星星的选择事件进行监听,获取用户选择的星星数量,这就需要我们在代码中进行监听操作。

RatingBar ratingBar = findViewById(R.id.ratingbar);
//星星变化监听
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
Toast.makeText(MainActivity.this, "rating==" + String.valueOf(rating), Toast.LENGTH_SHORT).show();
}
});

结语

以上就是RatingBar的使用介绍,是不是so easy,赶快在项目中使用吧!也麻烦各位小伙伴们以后看完我们的文章顺手点个赞吧~ 如果小伙伴想学习更多知识或者快速学习进阶,可以加入我们的WXGZH:下码看花一起探讨~

亲,麻烦给个五星好评!—RatingBar的更多相关文章

  1. 如何用jQuery实现五星好评

    jQuery是js的一个库,封装了我们开发过程中常用的一些功能,方便我们来调用,提高了我们的开发效率. Js库是把我们常用的功能放到一个单独的文件中,我们用的时候,直接引用到页面里面来就可以了. 接下 ...

  2. jQuery实现简单的五星好评

    最近一直在认真的努力工作,今天工作完成得差不多了,比较轻松点,在工作中有遇到用jq实现五星好评功能,觉得简单又有用,所以空闲时间就想分享出来. css部分: <style> .u_star ...

  3. js五星好评

    一般我们在一些购物以及美食的网站都会看到五星好评之类的,一下是使用js制作的五星好评! <!DOCTYPE html> <html lang="en"> & ...

  4. python爬虫06 | 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    来啦,老弟 我们已经知道怎么使用 Requests 进行各种请求骚操作 也知道了对服务器返回的数据如何使用 正则表达式 来过滤我们想要的内容 ... 那么接下来 我们就使用 requests 和 re ...

  5. UWP 五星好评

    var pfn = Package.Current.Id.FamilyName; await Launcher.LaunchUriAsync(new Uri("ms-windows-stor ...

  6. JQ五星好评效果

    $(".list-txt ul").find("li").click(function(){    if($(this).index()==0){       ...

  7. js五星好评2

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. python爬虫06取当当网 Top 500 本五星好评书籍

    主要思路 使用 page 变量来实现翻页 我们使用 requests 请求当当网 然后将返回的 HTML 进行正则解析 由于我们暂时还没学到数据库 所以解析完之后就把内容存到文件中 def main( ...

  9. 从输入url到页面展示出来经历了哪些过程

    本文只是一个整理向的随笔,以个人思路来简化的同时进行适当的拓展,如有错误,欢迎指正. 1.输入网址.  此时得到一个url 2.域名解析 整个过程都是dns系统在发挥作用,它的目的是将域名和ip对应起 ...

随机推荐

  1. Spring Boot 中 Redis 的使用

    Spring Boot 对常用的数据库支持外,对 Nosql 数据库也进行了封装自动化,如Redis.MongoDB等,本文主要介绍Redis的使用. Redis 介绍 Redis 是目前业界使用最广 ...

  2. TensorFlow笔记-图片读取

    回到上一篇文件的读取分这么几步: # 构造队列 # 1,构造图片文件的队列 file_queue = tf.train.string_input_producer(filelist) # 构造阅读器 ...

  3. 【git】15分钟学会使用Git和远程代码库

    Git是个了不起但却复杂的源代码管理系统.它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作.让我们诚实一记吧:Git是复杂的,我们不要装作它不是.但我仍然会试图教会你用(我的)基本 ...

  4. 如何处理MySQL经常出现CPU占用率达到99%

    如何处理MySQL经常出现CPU占用率达到99% 情况说明: 最近在自己购买的linux服务器上捣鼓了一个小项目,按理说不存在CPU占用率会达到100%的情况,但事实就是经常出现. 然后,我第一反应是 ...

  5. C++ 过滤出字符串的中文(GBK,UTF-8)

    最近在处理游戏敏感词之类的东西,为了加强屏蔽处理,所以需要过滤掉字符串中的除汉字之外的是其他东西如数字,符号,英文字母等. 首先我查阅资料并写了个函数: 示例:返回输入字符串中汉字的个数: std:: ...

  6. 单调栈&单调队列

    最近打了三场比赛疯狂碰到单调栈和单调队列的题目,第一,二两场每场各一个单调栈,第三场就碰到单调队列了.于是乎就查各种博客,找单调栈,单调队列的模板题去做,搞着搞着发现其实这两个其实是一回事,只不过利用 ...

  7. 并查集_HDU 1232_畅通工程

    某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可). ...

  8. JavaScript Boolean(逻辑)对象

    Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false). 实例 检查逻辑值 检查逻辑对象是 true 还是 false. 完整的 Boolean 对象参考手册 我们提供 J ...

  9. zmnXAglTcg

    #include <map>#include <cmath>#include <stack>#include <queue>#include <l ...

  10. 【POJ - 3273】Monthly Expense (二分)

    Monthly Expense 直接上中文 Descriptions 给你一个长度为N的序列,现在要让你把他们切割成M份(所以每一份都是连续的),然后每一份都有一个和sum[i],其中最大的一个是ma ...