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" />