Android RatingBar – un completo desastre

Sé que esto va a sonar ranty, pero sólo se siente como los componentes de la interfaz de usuario de Android y los comportamientos están fuera de la pared a veces.

Considere el siguiente XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <RatingBar android:id="@+id/ratingBar1" android:style="@android:style/Widget.Holo.Light.RatingBar.Small" android:progress="3" android:max="5" android:numStars = "5" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

Capturas de pantalla de cómo se vería en diferentes tamaños de dispositivos:

Barra de clasificación de Nexus S Barra de clasificación de Nexus S

Barra de clasificación de tabletas Barra de clasificación de tabletas

Barra de clasificación de dispositivos pequeños Barra de clasificación de dispositivos pequeños

A pesar de que es sólo en la herramienta de vista previa, puedo confirmar que es en realidad cómo se ve en los dispositivos.

El comportamiento del pequeño dispositivo es enloquecedor. ¿Cómo un RatingBar que especifica 5 estrellas sólo se muestran 3, ¿por qué no escala de las estrellas para encajar en la ventana?

Pensando en el ancho de wrap_content fue el problema, cambié a layout_width = "fill_parent" y que no cambió la apariencia en un pequeño dispositivo, pero completamente desordenado en Tablets (tanto para "numStars" de 5):

Tablet con fill_parent para el ancho

Mi pregunta es, ¿hay una manera de obtener un comportamiento adecuado para el RatingBar en términos de tamaño? Se podría pensar que el numStars o max sería suficiente pero es completamente arbitrario. Cuando el RatingBar se estira de modo que dibuja más estrellas, añade estrellas y ver cómo con un progreso de 3, se dibuja de acuerdo con el número de estrellas que se muestran? ¡No tiene sentido no adherirse a numStars!

Si no hay forma de obtener rendimiento lógico de la RatingBar, ¿hay alguna alternativa incluyendo widgets de terceros? Si no, supongo que siempre podría dibujar 5 ImageViews y sólo la plataforma para realizar en consecuencia.

(Tenga en cuenta que todo este comportamiento se ha exhibido con un solo RatingBar en el diseño – olvídese de intentar clasificarlo con otros widgets / componentes, o utilizar sus propios estilos.Sé que se ha hecho, pero ¿por qué es el comportamiento predeterminado?)

Me sentí de la misma manera que cuando se utiliza el RatingBar acciones, así que hice mi propio: SimpleRatingBar .

Cuenta con:

  • Totalmente funcional android:layout_width : puede ser configurado como wrap_content , match_parent o abrpity dp.
  • Número arbitrario de estrellas.
  • Tamaño de paso arbitrario.
  • El tamaño de las estrellas se puede controlar exactamente o estableciendo un tamaño máximo.
  • Colores adaptables (frontera, relleno y fondo de estrellas).
  • Separación adaptable del tamaño entre las estrellas.
  • Anchura adaptable de la frontera de estrellas.
  • Permite establecer OnRatingBarChangeListener
  • El relleno de estrellas se puede configurar para comenzar de izquierda a derecha o de derecha a izquierda (soporte de idioma RTL).
  • AnimationBuilder integrado en la vista para establecer la calificación mediante programación con animación.

Aquí hay una vista previa de la misma .

Puede encontrarlo en jcenter o en Maven Central . Así que en su archivo build.gradle sólo agregue a sus dependencias:

compile 'com.iarcuschin:simpleratingbar:0.1.+'

Espero que sea útil.

  • Actualizar la interfaz de usuario desde un AsyncTaskLoader
  • Implementar android: button = "@ drawable / checkbox" por programa
  • Android 3.0 CalendarView
  • La animación no se inicia hasta que las actualizaciones de la interfaz de usuario o el evento de toque
  • Conceptos básicos de Android: ejecutar código en el subproceso de la interfaz de usuario
  • Android: Cómo crear pestañas como las que aparecen en la página de la interfaz de usuario de Android
  • Cómo crear Android La vista de cuadrícula de Google Play como Widget con imágenes de diferentes tamaños cargadas dinámicamente
  • ¿Cómo evitar que un fragmento se agregue varias veces?
  • Tono de cambio de imagen de Android para simular el botón de clic
  • ¿Por qué se oculta el teclado virtual en el curriculum vitae?
  • ¿Qué componente de visualización utiliza Google Plus App (Stream)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.