如何使RatingBar显示五颗星
我正在遵循如何添加RatingBar的标准示例。 要控制星号的数量,我尝试使用android:numStars="5" 。 问题是,明星的数量似乎没有做任何事情。 在肖像布局,我得到6星,当我翻转手机,我得到约10星。 我试图设置加载xml的Activity( myBar.setNumStars(5) )中星号的数量,但是这个选项也没有成功。 
 所以我的问题是如何定义我的布局,以便它只显示五颗星? 设置numStars似乎不工作。 
在此先感谢罗兰
 <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.setNumStar文档说:
设置要显示的星星数量。 为了正确显示这些信息,build议这个小部件的布局宽度是包装内容。
所以将布局宽度设置为wrap_content应该可以解决这个问题。
 这对我工作: RatingBar应该在LinearLayout内部,而不是布局宽度设置为包装RatingBar内容。 
 此外,如果您设置了layout_weight ,则取代了numStars属性。 
 <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" /> 
configurationXML文件中的星数…不需要在样式或活动/片段….中提供重要提示:请确保您将WIDTH设置为Wrap内容,并且权重未启用
我也面临超过明星的问题。 为此,我们不需要担心任何布局types相对或线性布局。 简单地使用宽度如下:
 ratingBar.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
 请避免使用match_parent和fill_parent作为评分栏 。 
 希望事情会有所帮助。 
即使我正面临着@Roland的问题,我还包括了一个叫做的属性
 android:layout_alignParentRight="true" 
 在我的RatingBar在XML中的声明。 这个属性防止设置所需的星星和设置NumStars 
保持张贴在你遇到的问题!
对我来说,我有一个问题,直到我删除填充。 它看起来像某些设备上的错误,不会改变视图的大小以适应填充,而是压缩内容。
 删除padding ,改为使用layout_margin 。 
默认值是在xml布局中使用andoid:rating设置的。
为了在圆形图中显示简单的星级,请使用此代码
 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));
如果你正在使用
 android:layout_width="match_parent" 
使用wrap_content,它只会显示set numStars 🙂
 android:layout_width="wrap_content" 
您可以在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" /> 
 <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> 
 我发现RatingBar拉伸到最大数量的星星,因为它被封闭在一个属性为android:stretchColumns = "*"的表格中。 
 一旦我把stretchCoulumns从所有列中stretchCoulumns , RatingBar根据android:numStars值显示 
另一种可能性是您正在使用列表视图的适配器中的评级
 View android.view.LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot) 
下面的参数是所有属性正常工作所必需的:
-  将root设置parent
-   boolean attachToRoot为false
例如: convertView = inflater.inflate(R.layout.myId,parent,false);