Android Preference 使用请看这篇
系统设置的代码:
public class SetActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
if (savedInstanceState == null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings, new SettingsFragment())
.commit();
}
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
public static class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.set, rootKey);
}
}
set.xml 如下:
>
默认的系统设置页面如下:
不符合要求,如何修改SwitchPreferenceCompat的布局属性和SwitchCompat呢:
设置layout 布局
layout_setting_item
-->
这样就可以替换原有的布局属性,id 需要声明为@android:id/
看到SwitchCompat 用的@+id/switchWidget ,为啥不用@android:id/switch_widget 或者@+id/switch_widget,
有2点原因:1.@android:id/switch_widget 在android7.0以上才能使用 2.用了以后无法和该item的布局进行点击事件关联
SwitchPreferenceCompat 中的onBindViewHolder方法也标明了id
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
View switchView = holder.findViewById(R.id.switchWidget);
syncSwitchView(switchView);
syncSummaryView(holder);
}
修改后的布局如下:
Preference相关联的xml文件如下:preference.xml,preference_material.xml
参考文章: