studio stars num how custom color bar android xml layout

stars - rating bar custom android



Cómo hacer que RatingBar muestre cinco estrellas (16)

Otra posibilidad es que esté utilizando la Calificación en el Adaptador de la vista de lista

View android.view.LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)

Debajo de los parámetros son necesarios para que todos los atributos funcionen correctamente:

  1. Establecer la root para el parent
  2. boolean attachToRoot como false

Ejemplo : convertView = inflater.inflate (R.layout.myId, parent, false);

Estoy siguiendo el ejemplo estándar de cómo agregar una RatingBar . Para controlar el número de estrellas, traté de usar android:numStars="5" . El problema es que la cantidad de estrellas no parece hacer nada en absoluto. En el retrato-disposición consigo 6 estrellas y cuando doy la vuelta al teléfono consigo aproximadamente 10 estrellas. Traté de establecer el número de estrellas en mi Actividad ( myBar.setNumStars(5) ) que carga el xml pero tampoco tuvo éxito con esa opción.

Entonces mi pregunta es ¿cómo puedo definir mi diseño para que solo muestre cinco estrellas? Establecer numStars no parece funcionar.

Gracias de antemano, Roland


Además, si configura un layout_weight , esto reemplaza el atributo numStars .


Deberías usar numStars="5" en tu XML y configurar android:layout_width="wrap_content" .
Entonces, puedes jugar con estilos y otras cosas, pero el "truco_contenido" en layout_width es lo que hace el truco.


El valor predeterminado se establece con andoid:rating en el diseño xml.


Encontré que la RatingBar extendía a un número máximo de estrellas porque estaba encerrada en una tabla con el atributo android:stretchColumns = "*" .

Una vez que saqué stretchCoulumns de todas las columnas, la RatingBar muestra de acuerdo con el valor android:numStars


Esto funcionó para mí: RatingBar debería estar dentro de LinearLayout aparte de tener el ancho de diseño establecido para ajustar el contenido de RatingBar .


Incluso yo estaba enfrentando el problema @Roland, había incluido un atributo más llamado

android:layout_alignParentRight="true"

en mi declaración de RatingBar en XML. Este atributo impidió la configuración de las estrellas requeridas y la configuración de NumStars

¡Manténgase informado sobre los problemas que encuentra!


La documentación de RatingBar.setNumStar dice:

Establece la cantidad de estrellas para mostrar. Para que estos se muestren correctamente, se recomienda que el ancho de diseño de este widget sea el contenido del wrap-up.

Por lo tanto, establecer el ancho del diseño en wrap_content debería resolver este problema.


Para mí, tuve un problema hasta que eliminé el relleno. Parece que hay un error en ciertos dispositivos que no altera el tamaño de la vista para acomodar el relleno, y en su lugar comprime los contenidos.

Elimine el padding , use layout_margin en layout_margin lugar.


Para mostrar una clasificación de estrellas simple en una figura redonda simplemente use este código

public static String getIntToStar(int starCount) { String fillStar = "/u2605"; String blankStar = "/u2606"; String star = ""; for (int i = 0; i < starCount; i++) { star = star.concat(" " + fillStar); } for (int j = (5 - starCount); j > 0; j--) { star = star.concat(" " + blankStar); } return star; }

Y úsalo así

button.setText (getIntToStar (4));


Puede agregar una calificación predeterminada de cinco estrellas en el lado del diseño xml

android:rating="5"

Editar:

<RatingBar android:id="@+id/rb_vvm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginBottom="@dimen/space2" android:layout_marginTop="@dimen/space1" style="@style/RatingBar" android:numStars="5" android:stepSize="1" android:rating="5" />


Si estás usando

android:layout_width="match_parent"

Use wrap_content y solo mostrará el conjunto numStars :)

android:layout_width="wrap_content"


También estoy enfrentando el problema de exceder las estrellas que el número especificado de estrellas. Para esto, no queremos preocuparnos por el tipo de diseño, ya sea relativo o lineal. Simplemente use el ancho de la siguiente manera:

ratingBar.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));


Por favor, evite usar match_parent y fill_parent para la barra de calificación .
Espero que las cosas sean útiles.


<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <RatingBar android:id="@+id/ruleRatingBar" android:isIndicator="true" android:numStars="5" android:stepSize="0.5" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>


<RatingBar android:id="@+id/ratingBar" style="@style/custom_rating_bar" android:layout_width="wrap_content" android:layout_height="35dp" android:clickable="true" android:numStars="5" />

Configure el número de Estrellas en el archivo XML ... No es necesario que lo proporcione en Estilos o Actividad / Fragmento ... IMPORTANTE: Asegúrese de poner el ANCHO como contenido de Abrigo y los pesos no están habilitados


<RatingBar android:id="@+id/rating" android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/ratingBarStyleSmall" android:numStars="5" android:stepSize="0.1" android:isIndicator="true" />

en codigo

mRatingBar.setRating(int)