我在Switch上有以下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" />
触摸开关后,UI不会更新以显示开关的当前状态。后台的侦听器将接听触摸事件,好像它确实发生了一样,并以编程方式检查开关的当前状态将显示它已被更新,但UI元素未更改。
我相信它可能与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 doesn't update UI on Android 5.1.1
有人遇到过这个问题吗?