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:
- Establecer la
root
para elparent
- boolean
attachToRoot
comofalse
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)