簡體   English   中英

android-編輯文本背景在TextInputLayout錯誤上變紅

[英]android -Edit Text background get red on TextInputLayout error

這是一個非常奇怪的問題,這是我的代碼:

<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">

                    <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>

我在登錄過程中使用TextInputLayout,這是我的java代碼:

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

當顯示錯誤時,編輯文本的背景變為紅色,並且下方沒有顯示錯誤,如下所示:

在此處輸入圖片說明

我該如何解決這個問題? 我不希望edittext更改背景顏色,只是像往常一樣在editext下面顯示錯誤

問題出在您的style =“ @ style / edittexts”。請分享它的源代碼。必須將此樣式設置為紅色。

<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>

您可以這樣嘗試。

您可以在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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM