Я использую RecyclerView
с RatingBar
в каждой строке. Теперь иногда часть RatingBar
отображается неправильно. После выхода из экрана и возвращения обратно все нормально. Я понятия не имею, почему это происходит, я даже удалял любые стили из 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
, но это не имеет никакого значения.
EDIT:
Решение @Muhib Pirani похоже работает, но у меня есть две небольшие проблемы:
1) на Nexus 6P первый слой звезды смещается на несколько пикселей (приближение):
2) В Samsung Galaxy J3 (2016) это выглядит так:
Мне хорошо с границами, но я бы хотел, чтобы они были зелеными (не серыми, фон должен быть серым) в пустых звездах.