РейтингBar получает полупрозрачный

Я использую RecyclerView с RatingBar в каждой строке. Теперь, иногда часть RatingBar s отображается неправильно. Выйдя из экрана и вернувшись, все возвращается к норме. Я понятия не имею, почему это происходит, я даже удалял любые стили из RatingBar поэтому он должен иметь внешний вид по умолчанию.

Вот как это выглядит:

Введите описание изображения здесь

Протестировано на Nexus 6P (Android 7.1.1). Также тестируется на Samsung Galaxy J3 (2016) (Android 5.1.1), и здесь нет проблем.

Я также добавил

 holder.rbRating.requestLayout(); 

В onBindViewHolder() . Это немного уменьшает проблему, но она все еще присутствует. Когда я просматриваю «плохую» строку на экране, когда она используется повторно, она выглядит нормально.

Вот раскладка строк:

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

Я также попытался переключиться на android.support.v7.widget.AppCompatRatingBar , но это не имеет никакого значения.

РЕДАКТИРОВАТЬ:

Решение @Muhib Pirani, похоже, работает, но у меня есть две небольшие проблемы:

1) на Nexus 6P первый слой звезды компенсируется несколькими пикселями (приближение для увеличения):

Введите описание изображения здесь

2) На Samsung Galaxy J3 (2016) это выглядит так:

Введите описание изображения здесь

Я в порядке с границами, но я бы хотел, чтобы они были зелеными (не серыми, фон должен быть серым) в пустых звездах.

Solutions Collecting From Web of "РейтингBar получает полупрозрачный"

Я также столкнулся с той же проблемой. Мне пришлось программно устанавливать цвета в RatingBar как это, и это сработало:

 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. 

Держите layerDrawable.getDrawable(2) и layerDrawable.getDrawable(1) же цвета.

У меня также были проблемы с родным RatingBar, поэтому я решил использовать MaterialRatingBar . Он решил все мои проблемы.

Надеюсь, поможет