У меня есть следующий xml для коммутатора
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/swtich"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:clickable="true"
android:focusable="true"
android:theme="@style/Color1SwitchStyle" />
При касании переключателя пользовательский интерфейс не обновляется, чтобы показать текущее состояние переключателя. Слушатели в фоновом режиме распознают событие касания, как если бы оно произошло, и программная проверка текущего состояния переключателей покажет, что оно обновлено, но элемент пользовательского интерфейса не изменился.
Я полагаю, что это может иметь какое-то отношение к Androidx, поскольку такая же проблема возникает с другими элементами, использующими его, и только в Android 5.1.1. Версии Android ниже и выше, кажется, работают нормально. Переключение фрагментов вызовет мигание переключателя в правильное состояние перед открытием нового фрагмента.
Файл Gradle.build выглядит следующим образом:
implementation 'androidx.multidex:multidex:2.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha01'
Слушатель любопытных:
Switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Switch.setChecked(isChecked);
Switch.requestLayout();
Switch.refreshDrawableState();
}
});
Похоже, что у этого человека похожая проблема, но, поскольку коммутатор не использует адаптер, я не смог применить рекомендованное исправление: RecyclerView не обновляет пользовательский интерфейс на Android 5.1.1
Кто-нибудь когда-нибудь сталкивался с этой проблемой?