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:
- Cómo incrustar una vista (con botones, etc) dentro de un EditText?
- Cierre del Popup en Android
- Android.database.sqlite.SQLiteCursor@435b9ba0
- Crear widget en la instalación de la aplicación
- Conversión de RemoteView en una vista
¿Hay una manera de cambiar el tamaño de las estrellas?
- Los widgets que se pueden hacer clic en Android
- Números sólo de teléfono como teclado numérico
- Widget ListView con múltiples intentos pendientes
- Android: varios appWidgets que reproducen diferentes sonidos
- ¿Cuándo es necesario usar singleTop launchMode en un widget o aplicación de Android?
- Cómo reemplazar la coma con un espacio cuando uso el "MultiAutoCompleteTextView"
- Ajuste dinámico del contenido y del diseño del widget al tamaño que el usuario haya definido mediante el cambio de tamaño. Androide
- ImageView dentro de RelativeLayout tiene relleno superior e inferior
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" />
- Depuración de javascript en tablets / teléfonos Android?
- No se puede obtener el atributo clipChildren = false para trabajar