• 亲,麻烦给个五星好评!—RatingBar


    引言

    上一篇的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:下码看花一起探讨~

     

  • 相关阅读:
    servlet技术学习随笔
    python使用openpyxl读取excel文件
    课后作业-阅读任务-阅读提问-3
    课后作业-阅读任务-阅读提问-2
    课后作业-阅读任务-阅读笔记3
    构建之法:现代软件工程-阅读笔记2
    《构建之法:现代软件工程-阅读笔记》
    结对编程需求分析
    团队-团队编程项目作业名称-需求分析
    团队-团队编程项目作业名称-成员简介及分工
  • 原文地址:https://www.cnblogs.com/xmkh/p/11422961.html
Copyright © 2020-2023  润新知