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样式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码上夏雨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值