爪哇
DeviceSwitch.setLayoutResource(R.layout.settings);
DeviceSwitch.setKey(CategoryKey);
DeviceSwitch.setDefaultValue(true);
DeviceSwitch.setEnabled(true);
DeviceSwitch.setSelectable(true);
DevicesShowScreen.addPreference(DeviceSwitch);
如果此代码运行 - > DeviceSwitch.setLayoutResource(R.layout.settings); 未在Android 6.0中检查开关
此字符串 - > DeviceSwitch.setCheked(真); 在Android 6.0中无法使用
在Android 7.0中切换首选项从布局检查正常
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/listPreferredItemHeightSmall"
android:gravity="center_vertical"
android:clipToPadding="false">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:layout_marginStart="15dp">
<TextView android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="?attr/textAppearanceListItem"
android:ellipsize="marquee" />
<TextView android:id="@android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@android:id/title"
android:layout_alignStart="@android:id/title"
android:maxLines="10"
android:ellipsize="end" />
</RelativeLayout>
<Switch
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:focusable="false"
android:clickable="false"
android:gravity="center"
android:layout_marginEnd="15dp"
android:id="@android:id/switch_widget"
android:checked="false" />
</LinearLayout>
答案 0 :(得分:0)
这是因为sdk 23使用com.android.internal.R.id.switchWidget标识符而不是com.android.internal.R.id.switch_widget
解决方法非常简单。只需继承SwitchPreference类并复制一些代码:
android:id="@+id/switch_widget"
当然不要忘记在小部件切换器布局中将{min,max}
替换为{{1}}。