Android自定义EditTextPreference输入框
Posted 码上夏雨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android自定义EditTextPreference输入框相关的知识,希望对你有一定的参考价值。
android自定义EditTextPreference输入框
前言
Android想要对布局或者控件进行修改,往往采取两种方式
- 自定义样式继承父样式,并赋值
- 找到Android定义的布局,在自己的 layout 文件夹使用同名文件进行替换
效果预览
左边是默认 EditText 样式,右边是修改好的样式
具体实现
查看Material Design 3文档
任何的样式定义都应该先查看官方文档,样例App的主题是 Theme.Material3.Light.NoActionBar,因此先访问 Material3 Dialogs ,查看官方文档是否给了自定义布局的方式。经过查看发现并不可以。这是就要查找到样式对应的布局资源进行替换。
本地布局资源替换
首先,系统对于 Preference 的样式定义是由 BasePreferenceThemeOverlay 定义的,具体文件路径如下
能够看到 editTextPreferenceStyle 对应的样式是 @style/Preference.DialogPreference.EditTextPreference.Material ,找到对应的源码进行查看
<style name="Preference.DialogPreference.EditTextPreference">
<item name="android:dialogLayout">@layout/preference_dialog_edittext</item>
</style>
<style name="Preference.DialogPreference.EditTextPreference.Material">
<item name="android:layout">@layout/preference_material</item>
<item name="allowDividerAbove">false</item>
<item name="allowDividerBelow">true</item>
<item name="singleLineTitle">false</item>
<item name="iconSpaceReserved">@bool/config_materialPreferenceIconSpaceReserved</item>
</style>
这时就找到输入框对应的布局是 preference_dialog_edittext ,这样在本地 layout 文件夹下面创建一个同名 xml 文件即可
注意事项
在系统样式定义中, EditText 的 id 是 @android:id/edit
,因此你自定义布局中的输入控件也应该是 @android:id/edit
,否则会报错
参考文档
以上是关于Android自定义EditTextPreference输入框的主要内容,如果未能解决你的问题,请参考以下文章