如何在“TextInputLayout”的右端动态添加可绘制对象?

How to add a drawable at the right end of a "TextInputLayout" dynamically?

提问人:Hasnain Ghias 提问时间:6/25/2020 最后编辑:EdricHasnain Ghias 更新时间:6/28/2020 访问量:5116

问:

我正在尝试制作类似这个示例的东西:

Screenshot of a user name text field with a check suffix icon

我希望在我从服务器验证用户名时显示可绘制对象。

我正在使用Material Design Text Input Field & EditText。是的,我可以用 simple 和 an 来做到这一点,但我想使用标准元素。EditTextImageView

我看过官方文档,有一种方法可以使用 XML 在右上角添加图像,但我想以编程方式添加它。

安卓 编辑文本 android-textinputlayout 材质-组件-android

评论


答:

3赞 Mehul Kabaria 6/25/2020 #1

您需要以编程方式设置可绘制对象,如下所示

inputTextEditText.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(context,R.drawable.drawableRight), null)

评论

0赞 Hasnain Ghias 6/25/2020
谢谢,添加了可绘制对象,但现在文本与左侧图标重叠。这是屏幕截图:ibb.co/5j5N5nZ
0赞 Mehul Kabaria 6/25/2020
为此,您可能需要添加填充,从它开始。
0赞 Hasnain Ghias 6/25/2020
感谢您的帮助,我用“setCompoundDrawablesRelativeWithIntrinsicBounds”修复了它
0赞 Gabriele Mariotti 6/25/2020
@MehulKabaria 这是不正确的。在布局中使用 on != 使用(官方方式)。另请查看官方文档: 注意:您应该选择使用 API,而不是在setCompoundDrawablesWithIntrinsicBoundsTextInputEditTextapp:endIconDrawableEndIconModeDrawableTextInputEditText
17赞 Gabriele Mariotti 6/25/2020 #2

使用 setEndIconDrawable 方法:

    textInputLayout.setEndIconDrawable(R.drawable.xxxx);
    textInputLayout.setEndIconMode(TextInputLayout.END_ICON_CUSTOM);

或在布局中:

  <com.google.android.material.textfield.TextInputLayout
        app:endIconDrawable="@drawable/xxxxx"
        app:endIconMode="custom"

enter image description here

更多信息请见官方文档