RatingBar se está semi-transparente

Estoy usando RecyclerView con RatingBar en cada fila. Ahora, a veces parte de RatingBar s se dibujan incorrectamente. Después de salir de una pantalla y volver atrás todo vuelve a la normalidad. No tengo ni idea de por qué sucede esto, incluso RatingBar cualquier estilo de RatingBar por lo que debería tener apariencia predeterminada.

Así es como se ve:

Introduzca aquí la descripción de la imagen

Probado en Nexus 6P (Android 7.1.1). También probado en Samsung Galaxy J3 (2016) (Android 5.1.1) y no hay ningún problema aquí.

También he añadido

 holder.rbRating.requestLayout(); 

En onBindViewHolder() . Reduce el problema un poco, pero todavía está presente. Cuando desplazo una fila "mala" de una pantalla cuando se reutiliza parece bien.

Aquí está la disposición de la fila:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:paddingTop="@dimen/main_margin_top" android:paddingBottom="@dimen/main_margin_top" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/tvRatingTitle" android:text="Czystość wody" android:textSize="16sp" android:textStyle="bold" android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RatingBar android:id="@+id/rbRating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:isIndicator="true" android:layout_centerHorizontal="true" android:layout_below="@+id/tvRatingTitle" android:numStars="5" android:rating="2.5" android:stepSize="0.1" /> <CheckBox android:id="@+id/chkMissing" android:text="Zaznacz jeśli nie ma" android:layout_centerHorizontal="true" android:layout_below="@+id/rbRating" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> 

También he intentado cambiar a android.support.v7.widget.AppCompatRatingBar , pero no hace ninguna diferencia.

EDITAR:

@Muhib Pirani solución parece estar funcionando, pero tengo dos pequeños problemas:

1) en el Nexus 6P la primera capa de estrella está compensada por pocos píxeles (acercar para ver):

Introduzca aquí la descripción de la imagen

2) En Samsung Galaxy J3 (2016) se ve así:

Introduzca aquí la descripción de la imagen

Estoy bien con las fronteras, pero me gustaría que sean verdes (no gris, el fondo debe ser gris) en las estrellas vacías también.

También me enfrenté al mismo problema. Tuve que programar los colores a RatingBar como esto y funcionó:

 LayerDrawable layerDrawable = (LayerDrawable) ratingBar.getProgressDrawable(); layerDrawable.getDrawable(2).setColorFilter(ContextCompat.getColor(context, R.color.colorPrimaryDark), PorterDuff.Mode.SRC_ATOP); layerDrawable.getDrawable(1).setColorFilter(ContextCompat.getColor(context, R.color.colorPrimaryDark), PorterDuff.Mode.SRC_ATOP); layerDrawable.getDrawable(0).setColorFilter(ContextCompat.getColor(context, R.color.editTextBor), PorterDuff.Mode.SRC_ATOP);//when not selected color. 

Mantenga layerDrawable.getDrawable(2) y layerDrawable.getDrawable(1) mismo color.

También tuve problemas con el nativo RatingBar, así que decidí usar MaterialRatingBar . Resolvió todos mis problemas.

Espero eso ayude

  • Android RatingBar se pinta mal
  • Custom RatingBar Muestra un número diferente de estrellas cuando api 23
  • Ocultar sombra de la barra de calificación
  • Problema de tamaño vertical de la barra de clasificación de Android
  • Android: cambia el color de la barra de calificación a oro
  • Android RatingBar: No puede completar un ratingBar parcial si personalizo su color
  • ¿Cómo permitir valores completos (enteros) sólo en barras de calificación?
  • obtener valor RatingBar mientras se desliza
  • El tamaño del paso de la barra de clasificación no funciona en piruletas. Pero funciona en malvavisco
  • Cómo establecer una calificación específica en RatingBar en Espresso?
  • RatingBar: mismo rating dos veces
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.