Preference的常用xml属性
1.首先了解一下常用的xml属性
- 通过上图可知,使用android:layout属性可以自定义控件的UI样式
添加自定义控件
<Preference
android:title="Preference"
android:key="key_pre"
android:icon="@mipmap/ic_launcher"
android:layout="@layout/preference_layout"
/>
常用接听接口
一、Preference.OnPreferenceChangeListener 该监听器的一个重要方法如下:
boolean onPreferenceChange(Preference preference,Object objValue)
说明: 当Preference的元素值发送改变时,触发该事件。
返回值:true 代表将新值写入sharedPreference文件中。
false 则不将新值写入sharedPreference文件
二、Preference.OnPreferenceClickListener 该监听器的一个重要方法如下:
public booleanonPreferenceClick(Preference preference)
说明:当点击控件时触发发生,可以做相应操作。
触发规则:
- 先调用onPreferenceClick()方法,如果该方法返回true,则不再调用onPreferenceTreeClick方法 ;
如果onPreferenceClick方法返回false,则继续调用onPreferenceTreeClick方法。
- onPreferenceChange的方法独立与其他两种方法的运行。也就是说,它总是会运行。
自定义监听
主要实现依赖于上面介绍的两个接口
- 继承PreferenceActivity实现具体业务类,重写相关生命周期方法
public class MainActivity extends PreferenceActivity implements
Preference.OnPreferenceClickListener{
private PreferenceScreen hd_imSelect;
private ImageButton header_pic1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
header_pic1 = findViewById(R.id.pic_1);
addPreferencesFromResource(R.xml.preferences);
hd_imSelect = (PreferenceScreen) findPreference("header_select");
hd_imSelect.setOnPreferenceClickListener(this);
}
....
}
- 重写onPreferenceClick()方法
@Override
public boolean onPreferenceClick(Preference preference) {
// TODO Auto-generated method stub
Log.i(TAG, "onPreferenceClick----->"+String.valueOf(preference.getKey()));
// 对控件进行操作
operatePreference(preference);
return false;//这里return false
}
- 调用自定义的方法(这里我展示的是AlertDialog)
- 首先要设置好所需的布局文件
private void operatePreference(Preference preference) {
if (preference == hd_imSelect) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();
builder.setView(inflater.inflate(R.layout.alert_items, null))
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
builder.create();
builder.show();
}
}
效果如下
今天的文章AndroidStudio之自定义PreferenceScreen分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/26136.html