gpt4 book ai didi

错误(或提示)文本中的 Android TextInputLayout 图标

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:29 25 4
gpt4 key购买 nike

我正在使用 TextInputLayoutHelper 小部件,以便遵循 float 标签输入的 Material 指南。目前看起来像这样:

floating input label with error message

我的代码

在我的 Activity onCreate 函数中,我有:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

val passwordInputLayout = this.findViewById<TextInputLayoutHelper>(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 中的小部件看起来像...

<TextInputLayout
android:id="@+id/input_layout_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/EditTextTheme"
app:errorEnabled="true"
app:errorTextAppearance="@style/ErrorAppearance"
app:passwordToggleDrawable="@drawable/asl_password_visibility"
app:passwordToggleEnabled="true"
app:passwordToggleTint="?colorControlNormal">

<EditText
android:id="@+id/password_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/set_a_password"
android:inputType="textPassword"
android:singleLine="true" />

</TextInputLayout>

我想做什么

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

mock up of input with error icon

我的尝试

尝试 1

I found an implementation它使用 setError(text, drawable) 但我使用 KotlinsetError 不可用。

所以我尝试了:

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

我找到了 another one覆盖 TextInputLayoutHelper 以便在文本旁边设置可绘制对象。如您所见,setError 仅包含接口(interface)override fun setError(error: CharSequence?),它没有drawable 的参数。

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 方式”以在错误/提示文本旁边添加此图标?

最佳答案

您可以像这样将 SpannableString 与 ImageSpan 一起使用

val errorDrawable = ContextCompat.getDrawable(context!!, R.drawable.ic_error)
your_text_input_layout.error = SpannableString("your string").apply {
setSpan(ImageSpan(errorDrawable, ImageSpan.ALIGN_BASELINE), 0, 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)

关于错误(或提示)文本中的 Android TextInputLayout 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48284757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com