如何减小 Ratingbar 的大小?
Posted
技术标签:
【中文标题】如何减小 Ratingbar 的大小?【英文标题】:How can I decrease the size of Ratingbar? 【发布时间】:2011-09-03 11:01:42 【问题描述】:在我的活动中,我有一些评分栏。但是这个酒吧的规模是如此之大! 我怎样才能让它变小?
编辑
感谢加布里埃尔·内古特, 我用以下风格做到了:
<RatingBar
style = "?android:attr/ratingBarStyleSmall"
android:numStars = "5"
android:rating = "4" />
现在,尺寸缩小了,但是星数和评分不生效!!! 为什么?我有 7 颗星,其中 6 颗被选中。
【问题讨论】:
你的意思是Seekbar吗?设置高度和宽度对我来说很好。你可以在这里发布你的代码 sn-p 吗? 我会建议删除“编辑”,而不是使其成为公认的答案。那或@GabrielNegut 可以编辑他的答案以包含这种解决方案。在问题中包含解决方案会影响问答体验。style="?android:attr/ratingBarStyleSmall"
为我工作。
【参考方案1】:
我发布的原始链接现在已损坏(有充分理由说明仅发布链接不是最佳方式)。您必须使用ratingBarStyleSmall
或继承自Widget.Material.RatingBar.Small
的自定义样式设置RatingBar
的样式(假设您在应用中使用Material Design)。
选项 1:
<RatingBar
android:id="@+id/ratingBar"
style="?android:attr/ratingBarStyleSmall"
... />
选项 2:
// 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"
... />
【讨论】:
或者使用这种风格 style="?android:attr/ratingBarStyleSmall" 会减小尺寸。 但是右边多了一个无用的内边距!怎么去掉?! 注意:设置 去掉多余的星星【参考方案2】:这是我在努力减少小尺寸评级栏后的解决方案,甚至没有丑陋的填充
<RatingBar
android:id="@+id/listitemrating"
style="@android:attr/ratingBarStyleSmall"
android:layout_
android:layout_
android:scaleX=".5"
android:scaleY=".5"
android:transformPivotX="0dp"
android:transformPivotY="0dp"
android:isIndicator="true"
android:max="5" />
【讨论】:
我登录只是为了支持您对使用 transformPivot 来缓解不均匀填充问题的回答。谢谢! 终于不用填充了!! 很棒的答案!谢谢! 缩放会影响同级视图的对齐以及不平衡的边距和间距。【参考方案3】:如果您想以小尺寸显示评分栏,只需将此代码复制并粘贴到您的项目中即可。
<RatingBar
android:id="@+id/MyRating"
style="?android:attr/ratingBarStyleSmall"
android:layout_
android:layout_
android:layout_below="@id/getRating"
android:isIndicator="true"
android:numStars="5"
android:stepSize="0.1" />
【讨论】:
什么是 android:stepSize="0.1" ? codingaffairs.blogspot.com/2016/05/… 另请查看本页末尾的我的回答。 @HammadTariqSahi 很好,继续努力,但是我的代码有什么问题吗?有什么事请告诉我 @PirFahimShah 谢谢,兄弟,我还没有检查过这段代码。如果您遵循这种方法,您可以改进并设置评分栏的样式。【参考方案4】:您可以在RatingBar
的XML 代码中设置它,使用scaleX
和scaleY
进行相应调整。 “1.0”将是正常大小,“.0”中的任何内容都会减小它,大于“1.0”的任何内容都会增加它。
<RatingBar
android:id="@+id/ratingBar1"
android:layout_
android:layout_
android:scaleX="0.5"
android:scaleY="0.5" />
【讨论】:
这样做的问题是,即使图标更小,评分栏仍然占据与以前相同的宽度和高度。这会导致对齐问题,因为在第一个和最后一个图标旁边有一堆左右填充。例如,如果你想要你的图标像这样“XXXXX”,缩放后它会看起来像这样“-----XXXXX-----”,其中“-”是空白区域,“X”是一个图标.因此,您的评分栏看起来会因为空白而被推到右侧 我猜你正在使用相对布局。这很痛苦,但您可以通过使用android:layout_marginRight
和喜欢的方式调整它以使其进入正确的位置,从而以您想要的方式获得它。
在不创建左侧填充的情况下获得缩放添加 android:transformPivotX="0dp"【参考方案5】:
下面的 sn-p 为我调整 ratingBar 的大小
<RatingBar
android:layout_
android:layout_
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"/>
【讨论】:
如何更改此评级栏的半填充、全填充和空颜色的评级栏颜色? rating 参数是用来填充评分栏的吧?我使用了 android:rating="3.5" 所以填充了 3.5 颗星。您最多可以设置 5,因为在 xml 中设置了 max = 5。如果要更改评分栏的颜色,则必须在 style.xml 中创建样式,请参阅此链接:***.com/a/35914622/2915785 如何以编程方式 android:transformPivotX="0dp" android:transformPivotY="0dp" ? @NaveedAhmad 但是右边有一个无用的填充!怎么去掉?! @Mr.Hyde 检查raringbar的样式***.com/a/24407907/2915785【参考方案6】:Working Example
<RatingBar
style="@style/RatingBar"
android:layout_
android:layout_
android:numStars="5"
android:rating="3.5"
android:stepSize="0.5" />
并将其添加到您的样式 xml 文件中
<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了。
【讨论】:
【参考方案7】:检查我的答案here。实现它的最佳方法。
<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>
并像使用一样
<RatingBar
style="?android:attr/ratingBarStyleIndicator"
android:layout_
android:layout_
android:isIndicator="false"
android:max="5"
android:rating="3"
android:scaleX=".8"
android:scaleY=".8"
android:theme="@style/MyRatingBar" />
【讨论】:
【参考方案8】:<RatingBar
style="?android:attr/ratingBarStyleIndicator"
android:layout_
android:layout_
/>
【讨论】:
您能否详细说明您是如何找到解决方案的? 这不允许RatingBar
被改变。【参考方案9】:
在RatingBar
标签中,添加这两行
style="@style/Widget.AppCompat.RatingBar.Small"
android:isIndicator="false"
【讨论】:
【参考方案10】:如果您在带有 weightSum 的 Linearlayout 中使用评分栏。请确保您不应该为评分栏分配 layout_weight。相反,将评级栏放置在相对布局内并赋予相对布局权重。使评级栏宽度环绕内容。
<RelativeLayout
android:layout_
android:layout_weight="30"
android:layout_gravity="center"
android:layout_>
<RatingBar
android:id="@+id/userRating"
style="@style/Widget.AppCompat.RatingBar.Small"
android:layout_
android:layout_
android:layout_gravity="center"
android:stepSize="1" />
</RelativeLayout>
【讨论】:
【参考方案11】:使用Widget.AppCompat.RatingBar
,您可以使用两种样式; Indicator
和 Small
分别用于大尺寸和小尺寸。请参见下面的示例。
<RatingBar
android:id="@+id/rating_star_value"
style="@style/Widget.AppCompat.RatingBar.Small"
... />
【讨论】:
【参考方案12】:这对我有用。
android:id="@+id/ratingBar"
style="?android:attr/ratingBarStyleIndicator"
android:layout_
android:layout_
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" />
【讨论】:
【参考方案13】: <RatingBar android:id="@+id/id_tv_rating_bar"
style="@style/Widget.AppCompat.RatingBar.Small"
android:layout_
android:layout_
android:layout_marginLeft="@dimen/_80sdp"
android:numStars="5"
android:paddingTop="@dimen/_5sdp"
android:rating="5" />
只需使用 style="@style/Widget.AppCompat.RatingBar.Small"
就可以了!
【讨论】:
使用此评分栏颜色后没有变化。怎么改?【参考方案14】:如果您只需要默认样式,请确保您具有以下宽度/高度,否则 numStars 可能会搞砸:
android:layout_
android:layout_
【讨论】:
使用这种风格 style="?android:attr/ratingBarStyleSmall" 会缩小尺寸【参考方案15】:在RatingBar
中给出属性:
style="?android:attr/ratingBarStyleIndicator"
【讨论】:
【参考方案16】:对于那些以编程方式创建评分栏并希望设置小评分栏而不是默认的大评分栏的人
私有LinearLayout generateRatingView(浮点值) 线性布局线性布局评级=新线性布局(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"));//用于启用半星 ratingBar.setNumStars(5); ratingBar.setRating(value); linearLayoutRating.addView(ratingBar); 返回线性布局评级;【讨论】:
以上是关于如何减小 Ratingbar 的大小?的主要内容,如果未能解决你的问题,请参考以下文章