Android 如何制作RatingBar以显示五星
下面是如何添加分级条的标准示例。为了控制星星的数量,我尝试使用android:numStars=“5”。问题是,恒星的数量似乎没有任何作用。在纵向布局中,我得到6颗星,当我翻转手机时,我得到大约10颗星。我尝试在加载xml的活动(Android 如何制作RatingBar以显示五星,android,xml,layout,Android,Xml,Layout,下面是如何添加分级条的标准示例。为了控制星星的数量,我尝试使用android:numStars=“5”。问题是,恒星的数量似乎没有任何作用。在纵向布局中,我得到6颗星,当我翻转手机时,我得到大约10颗星。我尝试在加载xml的活动(myBar.setNumStars(5))中设置星星数,但该选项也没有成功 android:layout_alignParentRight="true" 所以我的问题是如何定义我的布局,使它只显示五颗星?SetnumStars似乎不起作用 android:layou
myBar.setNumStars(5)
)中设置星星数,但该选项也没有成功
android:layout_alignParentRight="true"
所以我的问题是如何定义我的布局,使它只显示五颗星?SetnumStars
似乎不起作用
android:layout_alignParentRight="true"
提前感谢,,
Roland默认值在xml布局中设置为。即使我遇到了@Roland的问题,我还包括了一个名为
android:layout_alignParentRight="true"
在我的分级栏中
XML声明。此属性阻止设置所需的星号和设置NumStars
android:layout_alignParentRight="true"
随时关注您遇到的问题 评级条.setNumStar文档中说:
android:layout_alignParentRight="true"
设置要显示的星星数。为了显示这些
正确地说,建议将此小部件的布局宽度包装起来
内容
android:layout_alignParentRight="true"
因此,将版面宽度设置为
wrap\u content
应该可以解决这个问题。这对我来说很有效:RatingBar
应该位于LinearLayout
内部,而不是将版面宽度设置为RatingBar
的内容 此外,如果您设置了布局权重
,这将取代numStars
属性。
android:layout_alignParentRight="true"
<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>
我发现分级栏
被拉伸到了最大星星数,因为它被包含在一个带有属性android:stretchColumns=“*”
的表中
android:layout_alignParentRight="true"
当我从所有列中取出stretchcoumns
后,将根据android:numStars
值显示RatingBar
android:layout_alignParentRight="true"
<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文件中的星星数。。。无需在样式或活动/片段中提供它。。。。
重要提示:请确保将宽度设置为未启用包裹内容和权重我还面临超过指定星号数的问题。为此,我们不想担心任何布局类型,无论是相对布局还是线性布局。只需使用如下宽度:
android:layout_alignParentRight="true"
ratingBar.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
请避免使用匹配父项,并为分级栏填写父项。
希望这些东西会有帮助。另一种可能是您正在使用列表视图适配器中的评级
android:layout_alignParentRight="true"
以下参数是所有属性正常工作所必需的:
android:layout_alignParentRight="true"
attachToRoot
为false
convertView=充气机。充气(R.layout.myId,父项,false) 对于我来说,我有一个问题,直到我移除了填充物。看起来某些设备上存在一个bug,它不会改变视图的大小以适应填充,而是压缩内容
android:layout_alignParentRight="true"
删除
padding
,改用layout\u margin
。要在圆形图中显示简单的星级,只需使用此代码
android:layout_alignParentRight="true"
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;
}
公共静态字符串getIntToStar(intStarCount){
字符串fillStar=“\u2605”;
字符串blankStar=“\u2606”;
弦星=”;
对于(int i=0;i0;j--){
星=星。concat(“+blankStar);
}
返回星;
}
像这样使用它
android:layout_alignParentRight="true"
setText(getIntToStar(4)) 如果您正在使用
android:layout_alignParentRight="true"
android:layout\u width=“match\u parent”
android:layout_alignParentRight="true"
使用wrap_内容,它将仅显示集合numStars:)
android:layout_alignParentRight="true"
android:layout\u width=“wrap\u content”
您可以在xml布局中添加默认的五星评级
android:layout_alignParentRight="true"
android:rating="5"
编辑:
android:layout_alignParentRight="true"
<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" />
您应该只使用
numStars=“5”
,并设置
android:layout\u width=“wrap\u content”
然后,你可以玩弄样式和其他东西,但版面宽度中的“包装内容”才是关键所在。这里的实际情况是使用
包装内容
,而不是匹配父项
。如果您将使用match\u parent
布局将填充星星,即使它大于numStars变量。如果您将分级栏
包装在约束布局
中,则布局的宽度为match\u约束
,编辑器预览将显示与其实际宽度成比例的多个星星,无论您设置android:numStars
属性如何。使用wrap_content
获得正确的预览:
android:layout_alignParentRight="true"
谢谢您的回答。问题是您不能使用android:layout\u width=“fill\u parent”,因为分级栏外观忽略了android:numStars othervise.:-/我的要求是设置分级栏,以填充父级或匹配父级,但为固定星,即5。怎么做?有可能吗?@PrashanthDebbadwar你试过3种不同尺寸的“风格”属性吗?e、 g.评级BarStyle这真的应该在文档中。我发现,即使加上一个右边距设置,也会使Numstarst失去吸引力。这是一个很好的建议。我去掉了填充物,终于让它适合我了。@ValentinGalea并不奇怪:评级栏关注自己的宽度,而外部LinearLayout关注填充其父布局宽度。只是帮了一个朋友做了同样的事情。我提出了这种方法,后来发现它是无效的。请举例说明如何将其添加到xml布局中。我已经添加了完整的视图。您能提供一些有用的示例吗?是的,关于match p