默认RatingBar根据步长设置图标问题(获取RatingBar值即可)

时间:2017-11-20 09:23:19

标签: android ratingbar

我使用Android默认评级栏来解决设置步长问题。

代码

private RatingBar rb;
private TextView tvSetRatingBar;
private Button btnGetRatingBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    rb = findViewById(R.id.rb);
    tvSetRatingBar = findViewById(R.id.tvSetRatingBar);
    btnGetRatingBar = findViewById(R.id.btnGetRatingBar);

    btnGetRatingBar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String strGetData = String.valueOf(rb.getRating());
            tvSetRatingBar.setText("Get Rating = " + strGetData);
        }
    });
} 

布局

<?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/rb"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="10dp"
    android:isIndicator="false"
    android:numStars="6"
    android:stepSize=".1" />

<TextView
    android:id="@+id/tvSetRatingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="10dp"
    android:hint="Set RatingBar"
    android:padding="10dp" />

<Button
    android:id="@+id/btnGetRatingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="10dp"
    android:hint="Get RatingBar"
    android:padding="10dp" />

 </LinearLayout>

输出 enter image description here

问题

你可以在上面的图片中看到getRating值在TextView中设置正常但是RatingBar图标设置不正确它始终设置为2.5。我使用默认的RatingBar。

机器人:stepSize的=&#34; 0.1&#34;在布局中设置。

2 个答案:

答案 0 :(得分:1)

尝试将其添加到RatingBar

android:secondaryProgressTint="#00000000"

如果您使用RatingBar此属性,则只能使用 API&gt; = 21

但是,要使其适用于所有版本,请使用AppCompatRatingBar,如下所示:

<android.support.v7.widget.AppCompatRatingBar
            android:id="@+id/rb"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="10dp"
            android:isIndicator="false"
            android:numStars="6"
            android:stepSize=".1"
            app:secondaryProgressTint="#00000000"
           />

在根布局中添加xmlns:app="http://schemas.android.com/apk/res-auto"

并且不要忘记在应用级别gradle中添加'com.android.support:appcompat-v7:X.X.X'(将X替换为最新版本)。

答案 1 :(得分:-1)

Ratingbar stepsize有一些属性。它只是提高 RatingBar 评级的一个因素。如果您希望评级显示为3.5或4.5,则可以将stepSize用作 0.5 。如果想要3.1或4.3之类的等级,你可以将stepSize设为0.1。

快乐的编码!!