Android TextInputLayout图标出错(或提示)文本

我正在使用TextInputLayoutHelper小部件,以遵循浮动标签输入的材料指南。 它目前看起来像这样:

浮动输入标签与错误消息

我的代码

在我的onCreatefunction上,我有:

 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val passwordInputLayout = this.findViewById(R.id.input_layout_password) passwordInputLayout.error = "8+ characters and at least one uppercase letter, a number, and a special character (\$, #, !)" passwordInputLayout.isErrorEnabled = true } 

和我的部件在我的xml看起来像…

    

我想做的事

我想在错误文本右侧的错误/提示文本(惊叹号三角形)中放置一个图标。

嘲笑与错误图标的输入

我的尝试

尝试1

我发现一个使用setError(text, drawable) 的实现 ,但我使用Kotlin setError不可用。

所以我试了一下:

 val warningIcon = ResourcesCompat.getDrawable(resources, R.drawable.ic_warning_black_24dp, null) warningIcon?.setBounds(0, 0, warningIcon.intrinsicWidth, warningIcon.intrinsicHeight) passwordInputLayout.error = "8+ characters and at least one uppercase letter, a number, and a special character (\$, #, !) $warningIcon" 

但是这并不呈现可绘制的,只有一个资源路径的字符串。

尝试2

我发现另一个覆盖TextInputLayoutHelper为了在文本旁边设置drawable。 正如你所看到的, setError只包含没有drawable参数的接口override fun setError(error: CharSequence?)

 override fun setError(error: CharSequence?) { super.setError(error) val warningIcon = ResourcesCompat.getDrawable(resources, R.drawable.ic_warning_black_24dp, null) warningIcon?.setBounds(0, 0, warningIcon.intrinsicWidth, warningIcon.intrinsicHeight) // mHelperView is a TextView used in my custom `TextInputLayout` override widget mHelperView!!.setCompoundDrawables(null, null, warningIcon, null) } 

是否有重写或内置“Android方式”添加此图标旁边的错误/提示文本?

  • Kotlinfunction:需要的单位? findInt
  • kapt2和butterknife产生lint错误:预期的idtypes的资源
  • 一次多个权限不工作在Android
  • 如何检测我在一个航点附近
  • 使用Realm + PowerMockito无法在Android Studio中运行Robolectric测试
  • 错误:实体类必须使用@Entity进行注释
  • Android Studio 3无法建立kotlin片段
  • 如何从kotlin的道路上获得歌曲的ALBUM ART?
  • One Solution collect form web for “Android TextInputLayout图标出错(或提示)文本”

    迟到的回应可能会帮助其他人陷入类似的困境。 我查看了源代码。 事情是setError(text, drawable)定义在EditText类而不是TextInputLayout作为您的布局是基于。 我有类似的代码和像你这样的问题,因为TextInputLayout没有任何方法来取代Draweble,那么我们必须在TextInputLayout下创建一个TextView来模拟错误信息。

    Kotlin language will be the best programming language for Android.