如何使RatingBar显示五颗星

Rol*_*and 87 xml layout android

我正在遵循如何添加a的标准示例RatingBar.控制我试图使用的星星数量android:numStars="5".问题是星星的数量似乎根本不起作用.在纵向布局中,我获得了6颗星,当我翻动手机时,我得到了大约10颗星.我试图在我的Activity(myBar.setNumStars(5))中设置加载xml 的星数,但是该选项也没有成功.

所以我的问题是如何定义我的布局,以便它只显示五颗星?设置numStars似乎不起作用.

罗兰,提前谢谢

Ale*_*voy 160

<RatingBar
            android:id="@+id/rating"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="?android:attr/ratingBarStyleSmall"
            android:numStars="5"
            android:stepSize="0.1"
            android:isIndicator="true" />
Run Code Online (Sandbox Code Playgroud)

在代码中

mRatingBar.setRating(int)
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答.问题是你不能使用android:layout_width ="fill_parent"因为RatingBar apperenty忽略了android:numStars othervise.: - / (111认同)
  • 我的要求是将ratingbar设置为填充父级或匹配父级但固定星级即5.如何执行此操作?可能吗? (3认同)

Lis*_*dro 58

RatingBar.setNumStar文件说:

设置要显示的星数.为了正确显示这些内容,建议此窗口小部件的布局宽度为换行内容.

因此,设置布局宽度wrap_content应解决此问题.


小智 25

这对我有用:RatingBar应该在LinearLayout布局宽度设置为包装内容之外RatingBar.

  • 奇怪但真实! (4认同)

jsi*_*mon 10

此外,如果您设置了a layout_weight,则取代该numStars属性.

  • 这真的应该在文档中.我发现即使添加边距右设置也会抛出numStars (2认同)

MQo*_*der 8

如果您正在使用

android:layout_width="match_parent"

使用 wrap_content 它将只显示设置的 numStars :)

android:layout_width="wrap_content"


Adr*_*rez 8

您应该只numStars="5"在您的 XML 中使用 ,并设置 android:layout_width="wrap_content".
然后,您可以尝试使用样式和其他东西,但是 layout_width 中的“wrap_content”才是诀窍。


Aji*_*ana 5

<RatingBar
                    android:id="@+id/ratingBar"
                    style="@style/custom_rating_bar"
                    android:layout_width="wrap_content"
                    android:layout_height="35dp"
                    android:clickable="true"
                    android:numStars="5" 
                    />
Run Code Online (Sandbox Code Playgroud)

配置XML文件中的星数...不需要在样式或活动/片段中提供....重要信息:确保将WIDTH作为包装内容并且未启用权重


Dev*_*eva 5

我也面临着超过星星的问题而不是指定的星星.为此,我们不需要担心布局类型的相对布局或线性布局.只需使用如下宽度:

ratingBar.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
Run Code Online (Sandbox Code Playgroud)


避免ratingbar使用match_parent和fill_parent.
希望事情会有所帮助.


Nic*_*zzi 5

如果您将RatingBara 包裹在其内部ConstraintLayoutmatch_constraint则编辑器预览将显示与其实际宽度成比例的星星数量,无论您设置android:numStars属性如何。用于wrap_content获得正确的预览:

<RatingBar android:id="@+id/myRatingBar"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_marginStart="48dp"
           android:layout_marginEnd="48dp"
           android:numStars="5"
           app:layout_constraintEnd_toEndOf="parent"
           app:layout_constraintStart_toStartOf="parent"
           app:layout_constraintTop_toBottomOf="parent" />
Run Code Online (Sandbox Code Playgroud)