Android如何调整TextInputLayout的startIconDrawable尺寸
TextInputLayout 调整 startIconDrawable 尺寸的实现方案
针对TextInputLayout未直接暴露可修改startIcon尺寸的XML属性问题,可根据项目依赖的Material组件库版本选择以下方案调整:
适配高版本组件库(Material Components 1.7.0+)
该版本起官方开放了startIcon的尺寸配置属性,可直接在已定义的textInputStyle样式中添加对应配置,无需额外代码逻辑:
- 新增属性配置示例:
<!-- 控制startIcon宽度,可根据输入文本实际大小调整,常规匹配值为18dp~24dp --> <item name="startIconWidth">20dp</item> <!-- 控制startIcon高度 --> <item name="startIconHeight">20dp</item> <!-- 可选:调整startIcon与输入框内容的水平间距 --> <item name="startIconPadding">8dp</item>
兼容低版本组件库(Material Components <1.7.0)
低版本未开放上述直接配置属性,可通过以下两种方式实现尺寸调整:
- 方式1:代码中手动设置Drawable边界
拿到对应TextInputLayout实例后,获取其startIconDrawable,通过边界设置指定显示尺寸:// dp转px的工具逻辑可自行实现 val targetIconSize = dpToPx(20) binding.textInputLayout.startIconDrawable?.setBounds( 0, 0, targetIconSize, targetIconSize ) - 方式2:自定义缩放后的图标资源
在drawable目录下新建图层列表资源,将原图标按指定尺寸包裹后引用:
再将布局中原有的<!-- drawable/ic_paypal_logo_adjusted.xml --> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:width="20dp" android:height="20dp" android:gravity="center"> <bitmap android:src="@drawable/ic_paypal_logo" /> </item> </layer-list>app:startIconDrawable引用替换为上述调整后的资源即可。
注意:不建议直接修改原始矢量图标/位图资源的固有尺寸,避免图标在其他复用场景下出现显示异常,优先通过上述配置层控制显示大小。
内容的提问来源于stack exchange,提问作者AmanSharma
相关产品推荐
相关产品推荐

