空和填充EditText的不同背景

时间:2017-01-27 14:44:29

标签: android android-edittext

是否可以在EditText中使用不同的背景,当它为空时填充?

2 个答案:

答案 0 :(得分:2)

你可以将EditText子类化

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);
    }
});

答案 1 :(得分:1)

您可以创建一个Text Watcher并将其添加到EditText。 更改父级布局(backgroundColor属性)并不难。

Text Watcher Docs

祝你好运。 (下次尝试对你的问题做出更多解释:))