繁体   English   中英

如何在 RatingBar 中设置星星的自定义大小

[英]How to set the custom size of the stars in RatingBar

我已经添加了样式

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

但是,我收到的不是缩放的星星,而是裁剪的星星:

在此处输入图片说明

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

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

android:scaleX="0.5"
android:scaleY="0.5"

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

//你也可以试试

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

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

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

只需获取要在运行时使用的可绘制高度并将其设置为 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 提供小尺寸的评级星级。 将 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"/>

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

我认为您必须使用 Custom Style for Rating Bar 。 是示例。

您可以在 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" />

这不完全是一个答案,但我想展示一个替代方案。 使用一个名为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

希望这可以帮助任何人!

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

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

android:scaleX="0.7"
android:scaleY="0.7"
android:transformPivotX="0dp"
android:height="40dp"

只需在样式中添加font-size ppt : style='font-size: 1.7vw'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM