Android ratingBar忽略numStars

时间:2016-02-23 22:06:01

标签: android ratingbar

我对Android开发很陌生。我试图将ratingBar指标添加到将成为ListView项目的布局屏幕,因此用户会看到一个餐馆名称列表,其中每个名称的右侧都有星号值。

我希望将视图限制为5星 - 即它应该永远不会显示超过5颗星,而且只有当用户将餐厅评为5星(在另一项活动中)时才会显示5星。

我已经阅读了thisthisthis,以及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个以上的星星显示。我在这里缺少什么?

enter image description here

1 个答案:

答案 0 :(得分:0)

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

<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:等级来反映你想要的。