AndroidStudio之自定义PreferenceScreen

AndroidStudio之自定义PreferenceScreenPreference的常用xml属性1.首先了解一下常用的xml属性通过上图可知,使用android:layout属性可以自定义控件的UI样式添加自定义控件<Preferenceandroid:title=”Preference”android:key=”key_pre”android:icon=”@mipmap/ic_launcher”android:layout=”

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)

说明:当点击控件时触发发生,可以做相应操作。

触发规则:

  1. 先调用onPreferenceClick()方法,如果该方法返回true,则不再调用onPreferenceTreeClick方法 ;

如果onPreferenceClick方法返回false,则继续调用onPreferenceTreeClick方法。

  1. onPreferenceChange的方法独立与其他两种方法的运行。也就是说,它总是会运行。

自定义监听

主要实现依赖于上面介绍的两个接口

  1. 继承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);

    	}
    	....
    }
  1. 重写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
    }
  1. 调用自定义的方法(这里我展示的是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分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/26136.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注