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 以反映您想要的内容。
我对 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 以反映您想要的内容。