You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:45:34