Cómo establecer el tamaño personalizado de las estrellas en RatingBar

Ya he añadido un estilo

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

Sin embargo, en lugar de estrellas en escala estoy recibiendo estrellas recortadas:

Introduzca aquí la descripción de la imagen

¿Hay una manera de cambiar el tamaño de las estrellas?

Android no escalará los iconos de una barra de clasificación. Cuando disminuye el maxHeight y maxHeight android recortará siempre los iconos como se muestra en la imagen. La solución para ello y parece ser la única solución es proporcionar sus propios iconos para las estrellas con las dimensiones deseadas y establecer el maxHeight y maxHeight para el tamaño de los iconos.

Otro enfoque sería escalar el widget:

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

// también puedes probar

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

Ref: /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> 

Resolviste tu problema. Pero esto puede ayudar a otros.

Tengo el mismo problema. Todas las soluciones que obtuve no funcionan para varios tamaños de pantalla. Después de pasar horas terminé con la siguiente solución.

Basta con obtener altura de dibujo que desea utilizar en tiempo de ejecución y establecerlo en RatingBar. Aquí hay código de ejemplo.

 Drawable starDrawable = getResources().getDrawable(R.drawable.YOUR_IMAGE); int height = starDrawable.getMinimumHeight(); LayoutParams params = (LayoutParams) ratingBar.getLayoutParams(); params.height = height; ratingBar.setLayoutParams(params); 

Mira esta barra de clasificación personalizada en estilo pequeño.

Creo que tienes que usar el estilo personalizado para la barra de calificación. Aquí está el ejemplo.

Esto no es exactamente una respuesta, pero me gustaría mostrar una alternativa. Usando una biblioteca llamada Iconify que te permite usar iconos vectoriales escalables en aplicaciones android y con un método simple puedes crear awesome ratingbar con iconos.

El método

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

Y luego en el método onCreate:

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

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

Los iconos son de otro sitio impresionante llamado Font Awesome

Espero que esto ayude a nadie!

  <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" /> 
  • Problema al reducir el tamaño de la barra de clasificación.
  • (Java / Android) Calcular días entre 2 fechas y presentar el resultado en un formato específico
  • TextView corta el texto cuando es lo suficientemente largo
  • Cómo enlazar AppWidgets a AppWidgetHost - Android
  • TextView sin ningún relleno predeterminado
  • Cómo crear una transparencia sobre otra vista en android?
  • Ocultar widget de la aplicación dependiendo del nivel de la API
  • Cómo proporcionar diferentes widgets Android para 1.6 y 3.0 +?
  • Android: pasar el objeto del widget de recopilación a la actividad
  • Diseño de widget Android - fondo negro predeterminado
  • ¿Cómo tot desplazarse al final de un android TextView?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.