У меня есть класс public class LevelSeekBar extends AppCompatSeekBar
.В этом классе у меня есть этот метод:
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
int color = getResources().getColor(getColorForState(enabled));
getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
}
Этот LevelSeekBar используется в пользовательском списке, реализованном с помощью RecyclerView.При обновлении каждый LevelSeekBar.setEnabled () вызывается один за другим.
На устройствах
Однако в Android 8.0 все превью установлены на основе последнего цвета, установленного в списке.Другими словами, допустим, у меня есть список из 2 элементов - первый «отключен», а второй «включен» - оба элемента будут отображаться как включенные.
Я подтвердил вотладчик, что переменная 'enabled' и соответствующий возвращенный цвет верны и соответствуют ожиданиям, и я подтвердил, что в этом случае обновляется полное представление переработчика.
Похоже на ошибку Oreo.Кто-нибудь еще видел это, или есть какие-нибудь идеи о том, как обойти?