¿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"
- Ver con estado de visibilidad GONE ocupar espacio en la pantalla
- ¿Cómo ocultar el botón de cierre en la vista de búsqueda de forma predeterminada?
- El tamaño del EditText no se ajusta al contenido
- Cómo cambiar las imágenes predeterminadas de CheckBox
- Cómo incrustar una vista (con botones, etc) dentro de un EditText?
Pero el resultado es demasiado pequeño y es imposible establecer una tarifa con esta propiedad.
¿Cómo podría hacerlo?
- Android EditText ("Textbox"): Auto capitalización de la primera letra de cada palabra mientras el usuario escribe
- Ejemplo de uso de pestañas de Android con Vistas en lugar de Actividades?
- Android cómo usar / mostrar MediaController con SurfaceView y MediaPlayer para video?
- Cardview - Establece diferentes colores de fondo para cada elemento
- TextView corta el texto cuando es lo suficientemente largo
- ¿Cómo iniciar un cuadro de diálogo desde un widget?
- ¿Cómo se utiliza el método getView () y dónde se llama?
- RemoteViews para la actualización de widget supera el error máximo de uso de memoria de mapa de bits
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
…
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"
- Detectar si el dispositivo Android tiene conexión a Internet
- Obtención del error "La actividad Java.lang.IllegalStateException se ha destruido" al utilizar pestañas con ViewPager