Android自定义EditTextPreference输入框

Posted 码上夏雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android自定义EditTextPreference输入框相关的知识,希望对你有一定的参考价值。

android自定义EditTextPreference输入框

前言

Android想要对布局或者控件进行修改,往往采取两种方式

  1. 自定义样式继承父样式,并赋值
  2. 找到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 文件即可

注意事项

在系统样式定义中, EditTextid@android:id/edit ,因此你自定义布局中的输入控件也应该是 @android:id/edit ,否则会报错

参考文档

Android 原生系统设置修改Preference样式

以上是关于Android自定义EditTextPreference输入框的主要内容,如果未能解决你的问题,请参考以下文章

Android 自定义 SeekBar

Android自定义水平进度条控件

自定义 Android Gradle -- 启动 zipalign 优化

Android自定义软键盘

[Android]自定义定时消失PopupWindow

Android 怎么自定义共享库