如何在TextInputLayout中向errortext添加解析操作?

时间:2018-03-05 20:29:33

标签: android material-design android-textinputlayout

我有一个文本TextInputLayout,用于验证用户输入。在某些情况下,我有一个"自动修复"可能或希望能够忽略某些警告,因此希望在我通过setError(...)输出的消息中添加一个动作。

我已经尝试使用ClickableSpan,但这确实没有用,因为点击没有正确处理,可用性似乎也不好,因为动作文本太小而不容易被击中。不知何故,我正在寻找一种"标准",材料风格的方式来动态显示一个动作按钮,可能在TextView的一侧有足够的空间,每当错误是"自动修复&# 34。

1 个答案:

答案 0 :(得分:0)

最后我决定直接在ErrorText中执行操作并不容易处理,并选择在TextInputLayout旁边使用ImageButtons:

<android.support.design.widget.TextInputLayout
    android:id="@+id/edit_activity_name_til"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:errorEnabled="true">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/edit_activity_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/desc_activity_hint"
        android:inputType="textCapWords|textAutoCorrect"
        android:maxLines="1" />
</android.support.design.widget.TextInputLayout>

<ImageButton
    android:id="@+id/quickFixButton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:elevation="2dp"
    android:visibility="gone"
    app:srcCompat="@drawable/ic_undelete" />

然后在Java中我显示并隐藏该图像按钮:

if(error){
    mActivityNameTIL.setError(str);
    mQuickFixBtn1.setVisibility(View.VISIBLE);
}else{
    mActivityNameTIL.setError("");
    mQuickFixBtn1.setVisibility(View.GONE);
}