我已经添加了样式
<style name="myRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:minHeight">32dp</item>
<item name="android:maxHeight">32dp</item>
</style>
然而,我收到的不是缩放的星星:
有没有办法改变星星的大小?
我已经添加了样式
<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 不会缩放评分栏图标。当您减小时minHeight
,maxHeight
android 将始终裁剪图标,如图所示。它的解决方法似乎是唯一的一种解决方案,即为具有所需尺寸的星星提供您自己的图标,并将 和 设置为minHeight
图标maxHeight
的大小。
//你也可以试试
<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"/>
您可以在 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'