Android - 如何删除setError()的感叹号

时间:2016-10-20 11:53:23

标签: android android-layout android-edittext android-xml android-styles

我的xml代码的密码字段部分:

<android.support.percent.PercentRelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
...

    <android.support.design.widget.TextInputLayout
        android:layout_below="@+id/uname_ly"
        android:id="@+id/text_input_layout_passwd"
        app:layout_widthPercent="70%"
        android:layout_centerHorizontal="true"
        app:layout_heightPercent="10%"
        app:layout_marginTopPercent="0%"
        app:layout_marginBottomPercent="0%"
        android:adjustViewBounds="true"
        android:textColorHint="@color/editTextHintColor"
        app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout"
        >

        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/nopasswd"
            android:inputType="textPassword"
            android:maxLines="1"
            android:textColor="@color/editTextTextColor" />

    </android.support.design.widget.TextInputLayout>
...

如何在调用setError()时删除此叠加红色感叹号? enter image description here

[更新样式]

<style name="TextAppearance.App.TextInputLayout" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/editTextHintColor</item>
</style>

3 个答案:

答案 0 :(得分:4)

使用setError(CharSequence error, Drawable icon)方法。将drawable设置为null:

editText.setError("Pls provide email", null);

答案 1 :(得分:1)

TextInputLayout现在是新的 material 软件包的一部分。这是有关如何使密码有效进行验证的更新:

布局:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/loginPasswordInputLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/grid"
    android:hint="@string/onboarding_hint_password"
    app:errorEnabled="true"
    app:passwordToggleContentDescription="@string/onboarding_toggle_description_password"
    app:passwordToggleEnabled="true"
    app:passwordToggleTint="?colorAccent">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/loginPasswordInputText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="start|center"
        android:inputType="textPassword"
        android:lines="1"
        tools:text="@string/onboarding_hint_password" />
</com.google.android.material.textfield.TextInputLayout>

设置错误消息并在代码中隐藏图标可以通过以下操作实现:

loginPasswordInputLayout.error = errorMessage
// Error icon overlaps with password visibility toggle, so remove it:
loginPasswordInputLayout.setErrorIconDrawable(0)

通过这种方式,您会获得红色(或您选择的颜色)文本和下划线,但密码可见性切换图标仍可完全访问。

答案 2 :(得分:0)

如果您正在使用 TextInputLayout,我认为这是一个更优化的答案。 我所做的是利用了错误,我只是在 2 秒后将文本输入布局重置为默认状态。

otpIn.setError(obj.getString("status"));

new Handler().postDelayed(new Runnable() {
@Override
public void run() {
otpIn.setError(null);
}
},2000);