Switch не обновляет пользовательский интерфейс для Android 5.1.1 - PullRequest
0 голосов
/ 18 января 2019

У меня есть следующий 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

Кто-нибудь когда-нибудь сталкивался с этой проблемой?

...