How can I decrease the size of Ratingbar?
我的活动中有一些评分栏。但是这个条形的尺寸太大了,怎么缩小呢?
编辑
感谢Gabriel Negut,我用以下样式做到了:
1 2 3 4 | <RatingBar style ="?android:attr/ratingBarStyleSmall" android:numStars ="5" android:rating ="4" /> |
现在,尺寸减小了,但是星级数和评级没有生效!!为什么?我有7颗星被选中其中6颗。
我发布的原始链接现在已断开(有充分的理由为什么仅发布链接不是最佳方法)。您必须使用
选项1:
1 2 3 4 | <RatingBar android:id="@+id/ratingBar" style="?android:attr/ratingBarStyleSmall" ... /> |
选项2:
1 2 3 4 5 6 7 8 9 10 11 | // styles.xml <style name="customRatingBar" parent="android:style/Widget.Material.RatingBar.Small"> ... // Additional customizations </style> // layout.xml <RatingBar android:id="@+id/ratingBar" style="@style/customRatingBar" ... /> |
这是我的解决方案,经过很多努力以减小尺寸小而没有难看的填充
1 2 3 4 5 6 7 8 9 10 11 | <RatingBar android:id="@+id/listitemrating" style="@android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleX=".5" android:scaleY=".5" android:transformPivotX="0dp" android:transformPivotY="0dp" android:isIndicator="true" android:max="5" /> |
如果要以小尺寸显示等级栏,则只需将此代码复制并粘贴到项目中。
1 2 3 4 5 6 7 8 9 | <RatingBar android:id="@+id/MyRating" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/getRating" android:isIndicator="true" android:numStars="5" android:stepSize="0.1" /> |
您可以在
1 2 3 4 5 6 | <RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleX="0.5" android:scaleY="0.5" /> |
下面的代码段为我调整了等级Bar
1 2 3 4 5 6 7 8 9 10 11 | <RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ratingBar" style="?android:attr/ratingBarStyleIndicator" android:scaleX=".5" android:rating="3.5" android:scaleY=".5" android:transformPivotX="0dp" android:transformPivotY="0dp" android:max="5"/> |
工作示例
1 2 3 4 5 6 7 | <RatingBar style="@style/RatingBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:rating="3.5" android:stepSize="0.5" /> |
并将其添加到样式xml文件中
1 2 3 4 5 | <style name="RatingBar" parent="android:style/Widget.Material.RatingBar.Small"> <item name="colorControlNormal">@color/primary_light</item> <item name="colorControlActivated">@color/primary_dark</item> </style> |
这样您就无需自定义ratingBar。
在这里检查我的答案。实现它的最佳方法。
1 2 3 4 5 6 | <style name="MyRatingBar" parent="@android:style/Widget.RatingBar"> <item name="android:minHeight">15dp</item> <item name="android:maxHeight">15dp</item> <item name="colorControlNormal">@color/white</item> <item name="colorControlActivated">@color/home_add</item> </style> |
并像
1 2 3 4 5 6 7 8 9 10 | <RatingBar style="?android:attr/ratingBarStyleIndicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:isIndicator="false" android:max="5" android:rating="3" android:scaleX=".8" android:scaleY=".8" android:theme="@style/MyRatingBar" /> |
一样使用
1 2 3 4 5 | <RatingBar style="?android:attr/ratingBarStyleIndicator" android:layout_width="wrap_content" android:layout_height="wrap_content" /> |
使用
1 2 3 4 | <RatingBar android:id="@+id/rating_star_value" style="@style/Widget.AppCompat.RatingBar.Small" ... /> |
如果您在LinearLayout中使用带有weightSum的"等级"栏。请确保您不要为评级栏分配layout_weight。取而代之的是,在相对布局内部放置评级栏,并赋予相对布局以权重。制作等级栏宽度换行内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <RelativeLayout android:layout_width="0dp" android:layout_weight="30" android:layout_gravity="center" android:layout_height="wrap_content"> <RatingBar android:id="@+id/userRating" style="@style/Widget.AppCompat.RatingBar.Small" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:stepSize="1" /> </RelativeLayout> |
在
1 2 | style="@style/Widget.AppCompat.RatingBar.Small" android:isIndicator="false" |
在
1 | style="?android:attr/ratingBarStyleIndicator" |
如果只需要默认样式,请确保具有以下宽度/高度,否则numStars可能会变得混乱:
1 2 | android:layout_width="wrap_content" android:layout_height="wrap_content" |
这对我有用。
1 2 3 4 5 6 7 8 9 10 11 12 | android:id="@+id/ratingBar" style="?android:attr/ratingBarStyleIndicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:scaleX=".8" android:scaleY=".8" android:stepSize="0.5" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.543" app:layout_constraintStart_toEndOf="@+id/title" app:layout_constraintTop_toTopOf="parent" /> |
对于以编程方式创建评分栏并希望设置小评分栏而不是默认大评分栏的用户
1 2 3 4 5 6 7 8 9 10 11 12 | private LinearLayout generateRatingView(float value){ LinearLayout linearLayoutRating=new LinearLayout(getContext()); linearLayoutRating.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); linearLayoutRating.setGravity(Gravity.CENTER); RatingBar ratingBar = new RatingBar(getContext(),null, android.R.attr.ratingBarStyleSmall); ratingBar.setEnabled(false); ratingBar.setStepSize(Float.parseFloat("0.5"));//for enabling half star ratingBar.setNumStars(5); ratingBar.setRating(value); linearLayoutRating.addView(ratingBar); return linearLayoutRating; } |
1 2 3 4 5 6 7 8 | <RatingBar android:id="@+id/id_tv_rating_bar" style="@style/Widget.AppCompat.RatingBar.Small" android:layout_width="wrap_content" android:layout_height="@dimen/_20sdp" android:layout_marginLeft="@dimen/_80sdp" android:numStars="5" android:paddingTop="@dimen/_5sdp" android:rating="5" /> |
只需使用