Android中EditText右侧自定义Drawable无法显示的解决求助
解决EditText的drawableRight不显示问题
以下是几种常见的排查和解决方法:
检查layer-list的尺寸配置
很多时候Drawable不显示是因为自身尺寸为0或过小。确保你的circle_add.xml里的shape设置了明确的尺寸,比如给圆形边框和加号都指定合适的大小:<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 圆形边框 --> <item> <shape android:shape="oval"> <stroke android:width="2dp" android:color="@color/black"/> <size android:width="24dp" android:height="24dp"/> </shape> </item> <!-- 水平加号 --> <item> <shape android:shape="line"> <stroke android:width="2dp" android:color="@color/black"/> <size android:width="12dp"/> </shape> </item> <!-- 垂直加号(旋转90度) --> <item> <rotate android:fromDegrees="90"> <shape android:shape="line"> <stroke android:width="2dp" android:color="@color/black"/> <size android:width="12dp"/> </shape> </rotate> </item> </layer-list>调整EditText的内边距和Drawable间距
如果EditText的右侧内边距太小,Drawable可能会被文本覆盖或者挤出可视区域。在EditText的xml中添加:android:paddingRight="32dp" android:drawablePadding="8dp"数值可以根据你的布局需求调整。
确认EditText的宽度设置
若EditText使用wrap_content且输入文本较长,可能会挤占右侧Drawable的空间。建议设置android:layout_width="match_parent"或固定宽度,保证有足够空间显示Drawable。验证Drawable引用是否正确
检查circle_add.xml是否在正确的drawable目录下(注意区分drawable和drawable-v24等版本目录),确保EditText中引用的@drawable/circle_add拼写无误。通过代码手动设置Drawable
如果xml配置仍无效,可以在代码中手动加载并设置Drawable,同时指定其边界:// Kotlin示例 val addDrawable = ContextCompat.getDrawable(this, R.drawable.circle_add) addDrawable?.setBounds(0, 0, addDrawable.intrinsicWidth, addDrawable.intrinsicHeight) yourEditText.setCompoundDrawables(null, null, addDrawable, null)// Java示例 Drawable addDrawable = ContextCompat.getDrawable(this, R.drawable.circle_add); if (addDrawable != null) { addDrawable.setBounds(0, 0, addDrawable.getIntrinsicWidth(), addDrawable.getIntrinsicHeight()); yourEditText.setCompoundDrawables(null, null, addDrawable, null); }
内容的提问来源于stack exchange,提问作者Jayashree K
相关产品推荐
相关产品推荐

