Android入门第19天-Android里的RatingBar的使用

Posted TGITCIC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android入门第19天-Android里的RatingBar的使用相关的知识,希望对你有一定的参考价值。

介绍

我们先来看一下什么叫RatingBar长什么样的。

我们很多时候订单评价给5星、打车评价都是用的这个RatingBar。本节我们学的这个RatingBar(星级评分条)其实在使用上是非常简单的,大家在某宝买过东西的对这个应该不陌生,收到卖家的包裹里甚至还会附有一张小纸片:五星好评返还多少元这样。

RatingBar关键属性介绍

RatingBar的4个属性:

  • android:isIndicator,RatingBar的指示是否起作用,默认为false,如果为true,RatingBar的进度不能被人为修改。因此叫isIndicator,它的意思就是“我只显示给你看不要你来改“,所以如果是isIndicator=true的话界面上的星星你是点不动的。
  • android:numStars,显示星星的总数量,必须为整数。
  • android:rating,设置默认评分值,值为浮点数。
  • android:stepSize,评分每次增加的值(最小变化值),值为浮点数。


RatingBar有3种内置样工:

  • 默认样式,即:style="?attr/ratingBarStyle",或者是:androidx.appcompat.widget.AppCompatRatingBar
  • 只读,即:style="?android:attr/ratingBarStyleIndicator"
  • 小样式,即:style="?android:attr/ratingBarStyleSmall"

课程目标

我们这次课程的目标就是同时演示以上3种样式在运行时的效果,同时我们对标准的AppCompatRatingBar添加一个点击事件,使得用户在点击手机屏上的小星星时,在主界面里的一个TextView里联动显示根据用户选择的星星不同时所获得的Rating的值。

先来看我们的UI端界面的代码。

代码

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    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:id="@+id/defaultRatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
 
    <RatingBar
        android:id="@+id/smallRatingBar"
        style="?android:attr/ratingBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:isIndicator="false"
        android:numStars="5"
        android:rating="4"
        android:stepSize="1" />
 
    <RatingBar
        android:id="@+id/indicatorRatingBar"
        style="?android:attr/ratingBarStyleIndicator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:isIndicator="true"
        android:numStars="5"
        android:rating="3"
        android:stepSize="1" />
 
    <androidx.appcompat.widget.AppCompatRatingBar
        android:id="@+id/compatRatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="" />
</LinearLayout>

 

代码导读

  • 这边我们使用了LinearLayout布局,从上到下有5个布局;
  • 第一个就是默认=AppCompatRatingBar;
  • 第三个indicatorRatingBar是“指示性”组件,它可以给你看到有几个星而不能去点和编辑;
  • 最后我们用Text View来显示compatRatingBar在“星星改变”时当前的rate值,这是一个浮点数,因为星星可以是“半”个(如果不想要半个要完整的星星需要自定义,不难但不是我们课程范围,本课程不讲这些“非主流程”的东西);

我们来看后台代码如何联动前台星星在被改变时的事件

MainActivity.java

package org.mk.android.demo.demoratingbar;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.os.Bundle;
import android.widget.RatingBar;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity 
    private RatingBar ratingBarCompat;
    private TextView txtDisplayValue;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ratingBarCompat = (RatingBar) findViewById(R.id.compatRatingBar);
        txtDisplayValue=(TextView)findViewById(R.id.textView);
        ratingBarCompat.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() 
            @Override
            public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) 
                StringBuffer displayValue=new StringBuffer();
                displayValue.append("rating: ").append(String.valueOf(rating));
                txtDisplayValue.setText(displayValue.toString());
            
        );
 
    

 关键还在于自己动手去实现一下吧。

以上是关于Android入门第19天-Android里的RatingBar的使用的主要内容,如果未能解决你的问题,请参考以下文章

Android入门第17天-Android里的ProgressBar的使用

Android入门第18天-Android里的SeekBar的使用

Android入门第16天-Android里的SwitchButton的使用

Android入门第30天-Android里的Toast的使用

Android入门第20天-Android里的ScrollView的使用

Android入门第33天-Android里的弹出式对话框