Android 如何在RatingBar中设置星星的自定义大小
我已经添加了一个样式Android 如何在RatingBar中设置星星的自定义大小,android,android-widget,Android,Android Widget,我已经添加了一个样式 <style name="myRatingBar" parent="@android:style/Widget.RatingBar"> <item name="android:minHeight">32dp</item> <item name="android:maxHeight">32dp</item> </style> 32dp 32dp 但是,我收到的不是缩放的星星,而是裁剪
<style name="myRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:minHeight">32dp</item>
<item name="android:maxHeight">32dp</item>
</style>
32dp
32dp
但是,我收到的不是缩放的星星,而是裁剪的星星:
有没有办法更改星星的大小?小样式的自定义分级栏
我认为您必须使用自定义样式的评级栏。就是这个例子。//您也可以试试
<style name="myRatingBar" parent="@android:style/Widget.RatingBar.Indicator">
<style name="myRatingBar" parent="@android:style/Widget.RatingBar.Small">
Android不会缩放分级栏图标。当您降低
minHeight
和maxHeight
时,android将始终裁剪图标,如图所示。它的解决方法似乎是唯一的一种解决方案,就是为星星提供您自己的图标,并将minHeight
和maxHeight
设置为图标的大小。您解决了问题。但这可能会帮助其他人
我也有同样的问题。我得到的所有解决方案不适用于多种屏幕尺寸。花了几个小时后,我以以下解决方案结束
只需获取您希望在运行时使用的可绘制高度,并将其设置为RatingBar。下面是示例代码
Drawable starDrawable = getResources().getDrawable(R.drawable.YOUR_IMAGE);
int height = starDrawable.getMinimumHeight();
LayoutParams params = (LayoutParams) ratingBar.getLayoutParams();
params.height = height;
ratingBar.setLayoutParams(params);
另一种方法是缩放小部件:
android:scaleX="0.5"
android:scaleY="0.5"
这不完全是一个答案,但我想展示一个替代方案。通过使用一个名为的库,您可以在android应用程序上使用可缩放的矢量图标,通过一个简单的方法,您可以创建带有图标的很棒的分级栏 方法
public static String montarEstrellasValoracion(float valoration,int starSize) {
String result="";
float cont=1f;
for(float i=1f;i<=valoration;i++){
if(valoracion==0){
break;
}
cont=i;
if((cont+0.5f)>=(valoration) && valoracion!=5f){
result+="{fa-star "+starSize+"dp} ";
result+="{fa-star-half-o "+starSize+"dp} ";
cont++;
break;
}else if((cont+0.5f)<(valoration) && (cont+1f)>(valoration) && valoration!=5f){
result+="{fa-star "+starSize+"dp} ";
result+="{fa-star "+starSize+"dp} ";
cont++;
break;
}
if(cont<=5){
result+="{fa-star "+starSize+"dp} ";
}
}
for(float j=cont;j<5f;j++){
result+="{fa-star-o "+starSize+"dp} ";
}
if(valoration==0){
result+="{fa-star-o "+starSize+"dp}";
}
return result;
}
valoracion.setText(montarEstrellasValoracion(valoration,15))代码>
valoracion.setTextColor(Color.parseColor(#000”);
这些图标来自另一个名为
希望这对任何人都有帮助!
<RatingBar
android:id="@+id/AVL_rating"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ASD_cardlayout"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginTop="@dimen/_10sdp"
android:isIndicator="true"
android:numStars="5"
android:rating="5.0"
android:secondaryProgressTint="@color/clr_red"
android:stepSize="1.0" />
也许我们可以使用另一种替代方法,android提供较小规模的评级明星。
将style=“@style/Widget.AppCompat.RatingBar.Small”添加到分级栏
<RatingBar
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/list_item_margin"
android:layout_marginLeft="@dimen/list_item_margin"
android:numStars="5"
android:isIndicator="true"
style="@style/Widget.AppCompat.RatingBar.Small"/>
只需将font-size
ppt添加到样式中:style='font-size:1.7vw'
您可以在分级栏的XML代码中设置它,使用scaleX和scaleY进行相应调整。“1.0”将是正常大小,.0中的任何内容都会减少它,大于“1.0”的任何内容都会增加它
您还可以参考使用库的链接。对于自定义分级栏,单击此按钮,获得自定义分级栏并享受分级栏
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleX="0.5"
android:scaleY="0.5" />
small style太小了。我如何设置默认星星的不同大小?@MarcinS。我添加了另一个链接OK。每当我将minHeight和maxHeight更改为较小的值时,我都会收到所附图片中的星星。似乎图片没有缩放,我必须通过提供我自己的图标和所需大小来自定义分级栏。如果你的应用程序的不同部分需要不同大小的星星?你需要新的资产吗?那么平板电脑也支持不同大小的星星呢?现在我有8组星星需要支持?图像应该按视图缩放,就像ImageView一样,而不是相反。我知道这个问题已经问了很久了,但我有一个bi与此无关,准确地说,@android:style/Widget.RatingBar“和小星星样式”的标准星星图标的大小是多少?android:attr/ratingBarStyleSmall"。你知道这些图标放在哪里吗?我创建了一种方法,你可以为RatingBar设置自己的图像,并为星形图标设置自定义颜色覆盖。只需稍加修改,你就可以设置自定义大小和高度,而不会对实际布局大小产生任何异常,还可以修改每个星形评级的填充。Thx bro,最好的解决方案;)@Ketan Ahir&Swayam宽度是多少?我有一个非常小的自定义绘图功能,我想适合任何人的屏幕。知道答案请告诉我。你知道我如何通过编程设置每个星星或特定星星的大小,比如五颗星中的第三颗星吗?它是android,而不是css。你可以简单地将android:minHeight=“32dp”
添加到
标记中。(注意)这个解决方案看起来不错,但也有缺点。它不会改变实际触摸区域,因此在用户进行评级时可能不自然。
<RatingBar
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/list_item_margin"
android:layout_marginLeft="@dimen/list_item_margin"
android:numStars="5"
android:isIndicator="true"
style="@style/Widget.AppCompat.RatingBar.Small"/>
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleX="0.5"
android:scaleY="0.5" />