在 EditText 背景外绘制复合可绘制对象

Posted

技术标签:

【中文标题】在 EditText 背景外绘制复合可绘制对象【英文标题】:Draw compound drawable outside EditText background 【发布时间】:2013-08-28 06:01:49 【问题描述】:

我正在尝试创建一个带有自定义背景的EditText,并在左侧创建一个compound drawable,但在背景之外(目前它似乎与背景重叠);像这样的东西。-

这可能吗?

【问题讨论】:

EditText 将绘制的任何内容都必须在其视图范围内。这些是规则。但是没有什么能阻止您通过为具有橙色预绘制的 View 制作巧妙的背景来改变规则。 谢谢@Budius。屏幕截图可能令人困惑,实际上橙色是整个布局的背景,所以我宁愿不将其添加为 EditText 背景的一部分。奇怪的是,我从一个带有一个 ImageView(邮件图标)和 EditText 的 Horizo​​ntal LinearLayout 开始,一个警告建议我用一个 EditText+Drawable 替换它,所以我认为有一种直接的方法可以实现这一点。 然后将我之前的评论更改为“透明”而不是“橙色”。但是,是的,该警告并不知道您只想要文本周围的文本框。在这种情况下,您有背景可能会更安全,而不是尝试调整所有不同密度的背景,只需使用水平 LinearLayout 并忽略警告。 你说得对,那么我会继续使用 LinearLayout 的。谢谢! 【参考方案1】:

如果您的背景是白框 - 那么不,不可能在 TextView 的范围之外绘制。

虽然您可以使用复合背景,但将带有白色框的橙色设置为TextView的背景,然后您就可以将邮箱设置为TextView的左侧可绘制对象.

【讨论】:

以上是关于在 EditText 背景外绘制复合可绘制对象的主要内容,如果未能解决你的问题,请参考以下文章

在焦点侦听器中更改复合可绘制时,EditText会无限地触发焦点更改事件

Android Edittext Drawable 点击卡住焦点

在 TextView 上绘制背景(不是全宽)

如何在 TextView 中将文本与其复合可绘制对象对齐?

聚焦时如何隐藏edittext的线条颜色

使用复合可绘制对象在 TextView 中设置实际文本填充