android -Edit文本背景在TextInputLayout错误上变红

时间:2017-12-31 14:32:01

标签: android android-edittext android-textinputlayout

这是一个非常奇怪的问题,这是我的代码:

curses.h

我正在使用TextInputLayout进行登录,这是我的java代码:

pass_l.setErrorEnabled(真); pass_l.setError(的getString(R.string.wrong_pass));

当它显示错误时,编辑文本的背景变为红色,并且它没有显示下面的错误,有些事情是这样的:

enter image description here

我该如何解决这个问题?我不希望编辑文本更改背景颜色,只是像往常一样在editext下面显示错误

3 个答案:

答案 0 :(得分:1)

<android.support.design.widget.TextInputLayout
                    android:id="@+id/input_layout_pass"
                    android:layout_width="match_parent"
                    android:layout_height="37dp"
                    android:layout_marginTop="10dp"
                    android:layoutDirection="rtl"
                    android:theme="@style/TextLabel"
                    android:src="@drawable/ic_https_grey600_18dp"
                    app:hintEnabled="false"
                    app:passwordToggleEnabled="true">

                    <EditText
                        android:id="@+id/password"
                        style="@style/edittexts"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:drawableLeft="@drawable/ic_https_grey600_18dp"
                       android:drawableStart="@drawable/ic_https_grey600_18dp"
                        android:hint="رمز عبور"
                        android:gravity="right|center_vertical"
                        android:imeOptions="actionDone"
                        android:inputType="textPassword"
                        android:transformPivotX="10dp"
                        app:passwordToggleEnabled="true" />

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



<style name="TextLabel" parent="TextAppearance.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/Color Name</item> 
    <item name="android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/Color Name</item>
    <item name="colorControlNormal">@color/Color Name</item>
    <item name="colorControlActivated">@color/Color Name</item>
 </style>

你可以这样试试。

答案 1 :(得分:0)

问题在于你的风格=“@ style / edittexts”。请分享它的源代码。它必须以这种风格设置为红色。

答案 2 :(得分:0)

你可以在textInputLayoutTag中使用它:

app:errorEnabled="true"
app:errorTextAppearance="@style/ErrorAppearance"

示例:

 <android.support.design.widget.TextInputLayout
        android:id="@+id/input_layout_pass"
        android:layout_width="match_parent"
        android:layout_height="37dp"
        android:layout_marginTop="10dp"
        android:layoutDirection="rtl"
        android:src="@drawable/ic_https_grey600_18dp"
        app:hintEnabled="false"
        app:passwordToggleEnabled="true"
        app:errorEnabled="true"
        app:errorTextAppearance="@style/ErrorAppearance">

        <android.support.v7.widget.AppCompatEditText
            android:id="@+id/password"
            style="@style/FormStyle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:drawableLeft="@drawable/ic_https_grey600_18dp"
            android:drawableStart="@drawable/ic_https_grey600_18dp"
            android:hint="رمز عبور"
            android:gravity="right|center_vertical"
            android:imeOptions="actionDone"
            android:inputType="textPassword"
            android:transformPivotX="10dp"
            app:passwordToggleEnabled="true" />

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

在styles.xml中添加ErrorAppearance和FormStyle

<style name="ErrorAppearance" parent="@android:style/TextAppearance">
        <item name="android:textColor">@color/textError</item>
        <item name="android:textSize">@dimen/font_small</item>
</style>


<style name="FormStyle">
       <item name="android:maxLines">1</item>
       <item name="android:drawablePadding">@dimen/spacing_small</item>
       <item name="android:textColor">@color/textHint</item>
</style>

在活动验证后,您可以:

pass_l.setError(getString(R.string.wrong_pass));