2012-06-18 32 views
28

necesito insertar un espacio entre las estrellas de mi ratingBar, ejemplo del ratingbar es así:espacio entre las estrellas de ratingBar

enter image description here

pero yo por lo tanto lo necesitan:

enter image description here

¿como puedo hacer esto?

+0

Ver [SO esta respuesta] (http://stackoverflow.com/questions/4213784/spacing-between-the-stars-of-a- calificación-barra). – Eric

+1

He agregado una solicitud de función, vota por ello: https://code.google.com/p/android/issues/detail?id=230511 –

Respuesta

3

No sé si será útil nunca más, pero hice una biblioteca personalizada que le permite cambiar espacio entre estrellas programaticamente y en XML (entre otras cosas): SimpleRatingBar.

Cuenta:

  • android:layout_width Totalmente de trabajo: se puede configurar para wrap_content, match_parent o abritary 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 personalizables en estado normal (borde, relleno y fondo de estrellas y barra de clasificación).
  • Colores personalizables en estado comprimido (borde, relleno y fondo de estrellas y barra de clasificación).
  • Separación de tamaño personalizable entre estrellas.
  • Ancho de estrellas personalizables.
  • Radio de esquina de estrellas personalizables.
  • Permite configurar OnRatingBarChangeListener
  • El relleno de estrellas se puede configurar para que comience de izquierda a derecha o de derecha a izquierda (soporte de lenguaje RTL).
  • AnimationBuilder integrado en la vista para establecer la clasificación programáticamente con animación.

Here is a preview of it.

En su caso, sólo tendría que hacer:

ratingbar.setStarsSeparation(20, Dimension.DP); 

o, por ejemplo, en píxeles:

ratingbar.setStarsSeparation(100, Dimension.PX); 

Se puede encontrar ya sea en jcenter o en Maven Central. Así que en su archivo build.gradle acaba de agregar a sus dependencias:

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

+0

No admite drawable personalizado para estrellas. ¿O sí? – FoY

+0

Hola @FoY, no es así. – FlyingPumba

0

Creo que tendrías que tomar una copia del archivo star png del sistema y agregar manualmente el relleno que deseas con un photoshop/gimp/algún otro editor.

+0

Según los enlaces que publiqué anteriormente, creo que puedes personalizar ' Drawable' utilizado para las estrellas que usan los atributos de tamaño para el relleno falso (al configurar una etiqueta 'style' para' RatingBar'). – Eric

+0

de esta manera ha sido feo, no tiene una forma en las configuraciones de la clase de la barra de calificación – ademar111190

+0

@Soxxeh Hmm, no encuentro un ejemplo de eso en ninguno de los enlaces que ha publicado. El primero parece más prometedor, pero la primera oración dice: "Tienes que agregar el relleno al propio png" y continúa mostrando un método de la clase ProgressBar. No veo en ningún lado un estilo que afecte el relleno. ¿Puedes elaborar? – FoamyGuy

0

Acepto que Tim apliqué la misma lógica y funcionó. Aquí en mi proyecto estoy usando mis propias imágenes estelares para la estrella ratin He hecho imágenes estelares que tienen espacio extra (relleno) en el lado derecho que resultó en espacio entre las estrellas

+1

Sí, estoy de acuerdo, pero. Ahora considere lo siguiente, creará 4 tipos de barras de calificación en un proyecto grande, cada barra de calificación con 2 o 3 tipos diferentes de dibujables son aproximadamente 10 imágenes que ponen, digamos, 2px de espacio, ahora piensan que es necesario aumentar 1px de espacio, Prefiere cambiar setPadding (2) para setPadding (3) en lugar de volver a emitir más de 10 imágenes. – ademar111190

+0

tiene una solución en su camino. Por favor, comparta que es lo que mejor intenté – Meher

+0

Lamentablemente, no se encontró nada elegante para resolver esto, puse espacio en propia imagen :(, No me gustó que el problema se resolviera con la esperanza de encontrar la manera adecuada de hacerlo. – ademar111190

3

Tiene la próxima propiedad.

android:progressDrawable = "@drawable/rating_stars" 
android:indeterminateDrawable = "@drawable/rating_stars" 

@ dibujable/RATING_STARS:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+android:id/background" 
      android:drawable="@drawable/star_empty" /> 
    <item android:id="@+android:id/secondaryProgress" 
      android:drawable="@drawable/star_empty" /> 
    <item android:id="@+android:id/progress" 
      android:drawable="@drawable/star" /> 
</layer-list> 

star_empty y la estrella son las imágenes que se encuentran en su directorio estirable. Por lo tanto, puede cambiar star y star_empty en un editor de gráficos y agregar spassing si lo necesita.

+3

Sí de acuerdo, pero. Ahora considere lo siguiente, creará 4 tipos de barras de calificación en un proyecto grande, cada barra de calificación con 3 tipos diferentes de dibujable son aproximadamente 12 imágenes que ponen, digamos, 2px de espacio, ahora creen que es necesario aumentar 1px de espacio , Prefiero cambiar setPadding (2) para setPadding (3) en lugar de volver a emitir más de 10 imágenes – ademar111190

1

Simplemente use el ícono personalizado y use el estilo, me refiero a Photoshop como quiera que se vea y reemplace con el icono de estilo de clasificación del sistema.

Cuestiones relacionadas