Android ratingBar 忽略 numStars

Android ratingBar ignoring numStars

我对 Android 开发还很陌生。我正在尝试将 ratingBar 指示器添加到将成为 ListView 项目的布局屏幕,因此用户会看到一个餐厅名称列表,每个名称的右侧都有其星级值。

我想将视图限制为 5 星 - 即它永远不会显示超过 5 星,并且只有当用户将餐厅评为 5 星时才显示 5 星(在另一个 activity 中)

我已经阅读了 this, this, and this 以及 ratingBar 的 developer.android.com 文档,但我终究无法让它只显示 5星。

这是我的布局代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="64dp"
                android:paddingRight="32dp"
                android:paddingTop="4dp"
                android:paddingBottom="4dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/restaurantNameLabel"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:textColor="#000000"
        android:textSize="16sp"
        tools:text="Shamrock Club"
        />

    <RatingBar
        android:id="@+id/ratingBar"
        style="?android:attr/ratingBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:numStars="5"
        android:stepSize=".01"
        android:isIndicator="true"
        android:rating="3"
        android:layout_toEndOf="@id/restaurantNameLabel"/>
</RelativeLayout>

这就是 Android Studio Design 视图中的样子;请注意,有 6 颗以上的星显示。我在这里错过了什么?

如果您可以从相对布局更改为线性布局,这应该可以正常工作

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="64dp"
                android:paddingRight="32dp"
                android:paddingTop="4dp"
                android:paddingBottom="4dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/restaurantNameLabel"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:textColor="#000000"
        android:textSize="16sp"
        tools:text="Shamrock Club"
        />

    <RatingBar
        android:id="@+id/ratingBar"
        style="?android:attr/ratingBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:numStars="5"
        android:stepSize=".01"
        android:isIndicator="true"
        android:rating="3"
        android:layout_toEndOf="@id/restaurantNameLabel"/>

</LinearLayout>

现在的方式实际上只会显示 3 颗星,但您可以更改 android:rating 以反映您想要的内容。