1

私はtextInputLayoutの中でtextInputEditTextを使用しています 私のeditTextのボーダードビューを実現するために私のeditTextのバックグラウンドを設定しなければなりませんでした。 私はtextInputLayout上でsetError()を呼び出すと、全体のeditTextの色が赤に変わります。 しかし、私はエラーテキストの色だけを変更し、ビュー全体は変更しません。エラーを設定した後カスタム背景のアンドロイドのtextInputEditTextが正常に動作しません。

screen shot

:エラーを設定する前に

screen shot

、ここでは私のXMLコードです:

<android.support.design.widget.TextInputLayout 
      android:layout_alignParentTop="true" 
      android:id="@+id/ex_pass_holder" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:passwordToggleEnabled="false" 
      android:gravity="right"> 
      <android.support.design.widget.TextInputEditText 
       android:id="@+id/ex_pass_et" 
       android:layout_width="fill_parent" 
       android:layout_height="50dp" 
       android:hint="رمز عبور فعلی" 
       android:inputType="textPassword" 
       android:textColor="#000" 
       android:textSize="15sp" 
       android:gravity="right|center" 
       android:background="@drawable/edittext_bg" 
       android:padding="8dp" 
       /> 
     </android.support.design.widget.TextInputLayout> 

私を助けてください、何午前私は間違っている?

+0

をオーバーライドすることで、これを固定? –

+0

@ Code-Apprentice全画面ではなくエラーテキストのみを変更したい – m7majidi

+0

あなたのスクリーンショットで私が何を見ているのか不明です。これらの2つの異なるテキストフィールドは同じ画面にありますか?または「前」と「後」を表示しようとしていますか?赤いテキストフィールドの上と下のテキストは何ですか?上記のテキストは、白いテキストフィールドのテキストと同じであることがわかります。これはユーザーが入力したデータですか?赤いテキストフィールドの下の赤いテキストはどうですか?これはエラーメッセージですか? –

答えて

1

私はTextInputLayoutを拡張し、いくつかの方法をあなたの代わりに起こるしたくない何

public class CustomTextInputLayout extends TextInputLayout { 

public CustomTextInputLayout(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 



@Override 
public void setError(@Nullable CharSequence error) { 
    super.setError(error); 
    try { 
     EditText et = getEditText(); 
     Drawable editTextBackground = et.getBackground(); 
     editTextBackground.clearColorFilter(); 

    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

@Override 
protected void drawableStateChanged() { 
    super.drawableStateChanged(); 
    try { 
     EditText et = getEditText(); 
     Drawable editTextBackground = et.getBackground(); 
     editTextBackground.clearColorFilter(); 

    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

}

+0

https://stackoverflow.com/a/40976082/2914140のようになります。だから 'if(et!= null){'と 'editTextBackground!= null'をチェックしてtry-catchを削除することができます。 – CoolMind

関連する問題