¿Cómo hacer un RatingBar más pequeño?

He añadido un RatingBar en un diseño:

<RatingBar android:id="@+id/ratingbar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:stepSize="1.0" /> 

Pero el estilo predeterminado para la barra de calificación es demasiado grande.
He intentado cambiarlo agregando el estilo del androide: style="?android:attr/ratingBarStyleSmall"

Pero el resultado es demasiado pequeño y es imposible establecer una tarifa con esta propiedad.

¿Cómo podría hacerlo?

El widget de RatingBar predeterminado es sorta 'lame.

La fuente hace referencia al estilo " ?android:attr/ratingBarStyleIndicator " además del " ?android:attr/ratingBarStyleSmall " con el que ya está familiarizado. ratingBarStyleIndicator es ligeramente más pequeño, pero sigue siendo bastante feo y los comentarios señalan que estos estilos "no admiten la interacción".

Es probable que sea mejor que usted. Hay una guía de aspecto decente en http://kozyr.zydako.net/2010/05/23/pretty-ratingbar/ que muestra cómo hacer esto. (No lo he hecho yo todavía, pero intentaré en un día o así.)

¡Buena suerte!

Ps Lo sentimos, se va a publicar un enlace a la fuente para que usted poke alrededor, pero soy un nuevo usuario y no puede publicar más de 1 URL. Si usted escoge su camino a través del árbol de origen, se encuentra en frameworks / base / core / java / android / widget / RatingBar.java

Cómo pegar el código dado aquí

Paso 1. Necesitas tu propia calificación estrellas en res/drawable

Una estrella llena

Estrella vacía

Step-2 En res/drawable ratingstars.xml necesitas ratingstars.xml como sigue …

 <?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> 

Paso-3 En res/values necesita styles.xml como sigue …

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="foodRatingBar" parent="@android:style/Widget.RatingBar"> <item name="android:progressDrawable">@drawable/ratingstars</item> <item name="android:minHeight">22dip</item> <item name="android:maxHeight">22dip</item> </style> </resources> 

Paso-4 En su diseño …

 <RatingBar android:id="@+id/rtbProductRating" android:layout_height="wrap_content" android:layout_width="wrap_content" android:numStars="5" android:rating="3.5" android:isIndicator="false" style="@style/foodRatingBar" /> 

Solo usa:

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

Cambie el factor de escala según su necesidad.

Para escalar sin crear un relleno a la izquierda también agregue

 android:transformPivotX="0dp" 

No hay necesidad de añadir un oyente al ?android:attr/ratingBarStyleSmall . Simplemente agregue android:isIndicator=false y capturará eventos de clic, por ejemplo

 <RatingBar android:id="@+id/myRatingBar" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:isIndicator="false" /> 

El pequeño implementado por el sistema operativo

 <RatingBar android:id="@+id/ratingBar" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

He encontrado una solución más fácil de lo que creo dado por los anteriores y más fácil que rodar su propio. Simplemente creé una pequeña barra de calificación, luego agregé un onTouchListener a ella. A partir de ahí, calculo el ancho del clic y determino el número de estrellas a partir de eso. Habiendo usado esto varias veces, la única peculiaridad que he encontrado es que el dibujo de una pequeña barra de calificación no siempre resultan a la derecha en una tabla a menos que lo adjunte en un LinearLayout (mira a la derecha en el editor, pero no el dispositivo) . De todos modos, en mi diseño:

  <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <RatingBar android:id="@+id/myRatingBar" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" /> </LinearLayout> 

Y dentro de mi actividad:

  final RatingBar minimumRating = (RatingBar)findViewById(R.id.myRatingBar); minimumRating.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View view, MotionEvent event) { float touchPositionX = event.getX(); float width = minimumRating.getWidth(); float starsf = (touchPositionX / width) * 5.0f; int stars = (int)starsf + 1; minimumRating.setRating(stars); return true; } }); 

Espero que esto ayude a alguien más. Definitivamente más fácil que dibujar su propio (aunque he encontrado que también funciona, pero sólo quería un uso fácil de las estrellas).

Aplicar esto.

 <RatingBar android:id="@+id/indicator_ratingbar" style="?android:attr/ratingBarStyleIndicator" android:layout_marginLeft="5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" /> 

Utilice este código

 <RatingBar android:id="@+id/ratingBarSmalloverall" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="30dp" android:isIndicator="false" android:numStars="5" /> 
 <RatingBar android:id="@+id/ratingBar1" android:numStars="5" android:stepSize=".5" android:rating="3.5" style="@android:style/Widget.DeviceDefault.RatingBar.Small" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

Pruebe a utilizar alguna biblioteca para la barra Clasificación, por ejemplo, la biblioteca Android de Clasificación de Materiales .

1.Add en sus dependencias:

  compile 'com.github.PhilJay:MPAndroidChart:v3.0.1' 

2.Declare estilo personalizado en su archivo styles.xml:

 <style name="RatingBar" parent="Theme.AppCompat"> <item name="colorControlNormal">@color/indigo</item> <item name="colorControlActivated">@color/pink</item> </style> 

3.Adicione la RatingBar en su diseño y aplique este estilo a través de android: theme atributo:

  <me.zhanghai.android.materialratingbar.MaterialRatingBar android:id="@+id/rating_bar" android:layout_width="wrap_content" android:layout_height="22dp" android:isIndicator="true" android:numStars="5" android:rating="0" android:stepSize="0.1" android:theme="@style/RatingBar"/> 

Si desea cambiar el tamaño de la RatingBar utilizando esta biblioteca, simplemente cambie el android: layout_height y android: layout_width a su preferencia.

Después de una gran cantidad de investigación que encontré la mejor solución para reducir el tamaño de las barras de calificación personalizado es para obtener el tamaño del progreso estirable en ciertos tamaños como se menciona a continuación:

Xxhdpi – 48 * 48 px

Xhdpi – 36 * 36 px

Hdpi – 24 * 24 px

Y en estilo poner el minheight y maxheight como 16 dp para toda la resolución.

Déjeme saber si esto no le ayuda a conseguir las mejores barras de la calificación del tamaño pequeño como estos tamaños encontré muy compatible y equivalente al atributo del estilo de ratingbar.small.

Utilice el código siguiente para la barra de clasificación pequeña con evento onTouch

 enter code here <RatingBar android:id="@+id/ratingBar" style="?android:ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:isIndicator="false" android:rating="4" android:stepSize="0.5" /> 
 <RatingBar android:id="@+id/rating_bar" style="@style/Widget.AppCompat.RatingBar.Small" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

Resuelvo este problema lo siguiente: style = "? Android: attr / ratingBarStyleSmall"

  • ¿Cómo comprobar el tipo de un widget de vista?
  • Los widgets que se pueden hacer clic en Android
  • Permitir a los usuarios introducir un nuevo valor en Spinner
  • Cómo implementar correctamente onRestoreInstanceState () para una subclase DialogPreference?
  • Cómo configurar el enfoque de un widget de botón mediante programación?
  • RemoteView y setGravity
  • Android: EditText no puede obtener el foco después de volver a habilitarse
  • Cómo crear un menú de barra lateral
  • No obtener el valor actualizado de la preferencia compartida en el servicio
  • Pasar extras del widget en PendingIntent a Actividad
  • Android: Clonación de un drawable para hacer un StateListDrawable con filtros
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.