android8.0 Settings之自定义各种Preference控件

本文介绍了如何在Android应用中实现Preference控件的兼容与美化,包括使用com.android.support:preference库确保低版本兼容,设置主题,添加依赖,编写设置界面XML,自定义Fragment,处理Preference的增删改操作,监听点击事件,以及自定义ListPreference,CheckBoxPreference,SwitchPreference和EditTextPreference。此外,还讨论了自定义样式和解决在低版本设备上遇到的问题。
摘要由CSDN通过智能技术生成

以前使用android.preference包里面的类创建出来的偏好设置界面是没有兼容低版本的,后来发现com.android.support:preference库有对低版本做兼容,在低版本上面也可以有Material Design风格,于是对其作了一番研究。

1、应用的主题需要继承自Theme.AppCompat系列:

2、在build.gradle中添加以下依赖:

compile ‘com.android.support:preference-v7:26.1.0’
compile ‘com.android.support:preference-v14:26.1.0’
3、在应用的主题里面添加:

@style/PreferenceThemeOverlay.v14.Material
4、编写my_pref.xml文件:

<?xml version="1.0" encoding="utf-8"?>
Android 系统中,可以在 Settings 应用模块下自定义一个 Preference 控件,并使用 `android:layout` 属性引用 SettingsLib 模块下的 Layout。具体步骤如下: 1. 在 SettingsLib 模块下的 res/layout 目录中定义一个 Layout 文件,例如 `settingslib_custom_preference.xml`,这个文件中定义了一个自定义的 Preference 控件,例如: ``` <com.example.CustomPreference android:id="@+id/custom_preference" android:layout="@layout/settingslib_custom_preference_layout" /> ``` 其中,`CustomPreference` 是自定义的 Preference 类,`settingslib_custom_preference_layout` 是在 SettingsLib 模块下的 res/layout 目录中定义的布局文件。 2. 在 Settings 应用模块下的 res/values/attrs.xml 文件中定义一个自定义的属性,例如: ``` <declare-styleable name="CustomPreference"> <attr name="custom_attr" format="reference" /> </declare-styleable> ``` 这个属性可以用来在布局文件中设置一些自定义的属性值。 3. 在 Settings 应用模块下的 res/layout 目录中定义一个 Layout 文件,例如 `settings_custom_preference.xml`,这个文件中引用了 SettingsLib 模块下的布局文件,并设置了自定义属性值,例如: ``` <com.example.CustomPreference android:id="@+id/custom_preference" android:layout="@layout/settingslib_custom_preference_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:custom_attr="@string/custom_value" /> ``` 其中,`com.example.CustomPreference` 是自定义的 Preference 类,`settingslib_custom_preference_layout` 是在 SettingsLib 模块下的 res/layout 目录中定义的布局文件,`app:custom_attr` 是在上一步中定义的自定义属性。 4. 在 Settings 应用模块下的 Java 代码中获取 SettingsLib 模块下 Layout 布局中的 id,例如: ``` View view = LayoutInflater.from(context).inflate(R.layout.settings_custom_preference, parent, false); CustomPreference customPreference = view.findViewById(R.id.custom_preference); ``` 其中,`R.layout.settings_custom_preference` 是在 Settings 应用模块下的 res/layout 目录中定义的布局文件,`R.id.custom_preference` 是在 SettingsLib 模块下的 res/layout 目录中定义的布局文件中的 id。 通过以上步骤,就可以在 Settings 应用模块下自定义一个 Preference 控件,并使用 SettingsLib 模块下的布局文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安卓兼职framework应用工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值