30

我已经添加了样式

<style name="myRatingBar" parent="@android:style/Widget.RatingBar">
    <item name="android:minHeight">32dp</item>
    <item name="android:maxHeight">32dp</item>
</style>

然而,我收到的不是缩放的星星:

在此处输入图像描述

有没有办法改变星星的大小?

4

11 回答 11

33

另一种方法是缩放小部件:

android:scaleX="0.5"
android:scaleY="0.5"
于 2015-11-09T02:38:25.607 回答
21

Android 不会缩放评分栏图标。当您减小时minHeightmaxHeightandroid 将始终裁剪图标,如图所示。它的解决方法似乎是唯一的一种解决方案,即为具有所需尺寸的星星提供您自己的图标,并将 和 设置为minHeight图标maxHeight的大小。

于 2012-09-14T03:59:39.843 回答
6

//你也可以试试

<style name="myRatingBar" parent="@android:style/Widget.RatingBar.Indicator">

<style name="myRatingBar" parent="@android:style/Widget.RatingBar.Small">

参考: /android-sdk/platforms/android-10/data/res/values/styles.xml

<style name="Widget.RatingBar">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:progressDrawable">@android:drawable/ratingbar_full</item>
        <item name="android:indeterminateDrawable">@android:drawable/ratingbar_full</item>
        <item name="android:minHeight">57dip</item>
        <item name="android:maxHeight">57dip</item>
        <item name="android:thumb">@null</item>
    </style>

    <style name="Widget.RatingBar.Indicator">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:progressDrawable">@android:drawable/ratingbar</item>
        <item name="android:indeterminateDrawable">@android:drawable/ratingbar</item>
        <item name="android:minHeight">38dip</item>
        <item name="android:maxHeight">38dip</item>
        <item name="android:thumb">@null</item>
        <item name="android:isIndicator">true</item>
    </style>

    <style name="Widget.RatingBar.Small">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:progressDrawable">@android:drawable/ratingbar_small</item>
        <item name="android:indeterminateDrawable">@android:drawable/ratingbar_small</item>
        <item name="android:minHeight">14dip</item>
        <item name="android:maxHeight">14dip</item>
        <item name="android:thumb">@null</item>
        <item name="android:isIndicator">true</item>
    </style>
于 2012-09-12T09:20:57.043 回答
5

你解决了你的问题。但这可能对其他人有所帮助。

我有同样的问题。我得到的所有解决方案都不适用于多种屏幕尺寸。花了几个小时后,我以以下解决方案结束。

只需获取要在运行时使用的可绘制高度并将其设置为 RatingBar。这是示例代码。

Drawable starDrawable = getResources().getDrawable(R.drawable.YOUR_IMAGE);
int height = starDrawable.getMinimumHeight();
LayoutParams params = (LayoutParams) ratingBar.getLayoutParams();
params.height = height;
ratingBar.setLayoutParams(params);
于 2014-10-18T17:48:52.747 回答
3

也许我们可以使用另一种替代方案,即 android 提供小尺寸的评分星。将 style="@style/Widget.AppCompat.RatingBar.Small" 添加到 RatingBar。

            <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"/>
于 2018-05-16T22:10:51.783 回答
2

看看这个小风格的自定义评分栏。

我认为您必须对 Rating Bar 使用自定义样式。是示例。

于 2012-09-12T06:57:54.913 回答
1

您可以在 RatingBar 的 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" />
于 2020-06-11T07:23:25.167 回答
0

这不完全是一个答案,但我想展示一个替代方案。使用一个名为Iconify的库,它允许您在 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;
}

然后在 onCreate 方法上:

IconTextView valoracion = (IconTextView)item.findViewById(R.id.id_icon_textview);

valoracion.setText(montarEstrellasValoracion(valoration,15)); valoracion.setTextColor(Color.parseColor("#000");

这些图标来自另一个很棒的网站,叫做Font Awesome

希望这对任何人都有帮助!

于 2015-12-15T17:42:13.490 回答
0
             <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" />
于 2017-05-31T09:29:46.040 回答
0

除了 xleon 显示的缩放,设置 transformPivotX="0dp" 然后设置自定义高度。

android:scaleX="0.7"
android:scaleY="0.7"
android:transformPivotX="0dp"
android:height="40dp"
于 2021-08-16T18:09:47.727 回答
-2

只需将font-sizeppt 添加到样式中:style='font-size: 1.7vw'

于 2018-09-21T09:38:58.817 回答