Answers:
<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" />
在代码中
mRatingBar.setRating(int)
这对我有用:RatingBar
应该在内部,LinearLayout
而不是设置布局宽度来包装的内容RatingBar
。
此外,如果您设置了layout_weight
,则该numStars
属性将取代该属性。
您应该只numStars="5"
在XML中使用
并设置
android:layout_width="wrap_content"
。
然后,您可以玩弄样式和其他内容,但是layout_width中的“ wrap_content”是有效的方法。
<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"
/>
在XML文件中配置星标的数量...无需在样式或活动/片段中提供它。
对我来说,在删除填充之前我一直遇到问题。在某些设备上似乎存在一个错误,该错误不会更改视图的大小以适应填充,而是会压缩内容。
删除padding
,layout_margin
改为使用。
要以圆形显示简单的星级,只需使用此代码
public static String getIntToStar(int starCount) {
String fillStar = "\u2605";
String blankStar = "\u2606";
String star = "";
for (int i = 0; i < starCount; i++) {
star = star.concat(" " + fillStar);
}
for (int j = (5 - starCount); j > 0; j--) {
star = star.concat(" " + blankStar);
}
return star;
}
像这样使用
button.setText(getIntToStar(4));
您可以在xml布局的旁边添加五颗星的默认评分
android:rating="5"
编辑:
<RatingBar
android:id="@+id/rb_vvm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="@dimen/space2"
android:layout_marginTop="@dimen/space1"
style="@style/RatingBar"
android:numStars="5"
android:stepSize="1"
android:rating="5" />
如果您要包装RatingBar
里面的ConstraintLayout
match_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" />
默认值是在xml布局中使用andoid:rating设置的。
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RatingBar
android:id="@+id/ruleRatingBar"
android:isIndicator="true"
android:numStars="5"
android:stepSize="0.5"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
此处的实际情况是使用wrap_content
而不是match_parent
。如果您将使用match_parent
布局,即使它大于numStars变量,也将填充星星。