2017-01-27 12 views

答えて

2

あなたが実際に

public class MyEditText extends EditText { 

    Drawable backgroundEmpty, backgroundFilled; 

    public MyEditText(Context context) { 
     super(context); 
     init(null); 
    } 

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

    private void init(AttributeSet attrs){ 
     if(attrs != null){ 
      backgroundEmpty = ... 
      backgroundFilled = ... 
     }else{ 
      backgroundEmpty = ... 
      backgroundFilled = ... 
     } 
    } 

    @Override 
    protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) { 
     super.onTextChanged(text, start, lengthBefore, lengthAfter); 
     setBackground(text.toString().length() == 0 ? backgroundEmpty : backgroundFilled); 
    } 
} 

またはTextWatcher

editText.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 

    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     editText.setBackground(s.toString().length() == 0 ? backgroundEmpty : backgroundFilled); 
    } 
}); 
+0

あなたの回答をさらに一歩進めて、いくつかのXMLコードを提供することができます^^。 – AnixPasBesoin

+0

何のXMLコードですか? – lelloman

+0

カスタムEditTextを使用します。 – AnixPasBesoin

1

テキストウォッチャーを作成してEditTextに追加することができます。 親レイアウト(backgroundColorプロパティ)を変更するのは難しくありません。

Text Watcher Docs

幸運。 (次回は:)あなたの問題の詳細説明になろう)

+0

を使用し、私は追加したいのEditTextをサブクラス化することができます:あなたは予定がある場合それらのいくつかを持つためには、EditTextをサブクラス化し、このサブクラスに二次的な背景属性を与えることは価値があるかもしれないので、これはレイアウトxmlを通して処理することができます。 – Haem

+0

これは、2-Way Databind Androidの使用を開始した場合にのみ達成できます。 これは、XMLレイアウトが条件を受け入れる唯一の方法です。 続きを読む:https://developer.android.com/topic/libraries/data-binding/index.html#expression_language –

+0

私はサブクラスコードの条件を実装する行に沿って考えていました。 「ビュークラスの作成」(https://developer.android.com/training/custom-views/create-view.html)チュートリアルのように、「secondarybackground」と言ってください。 – Haem

関連する問題