是否可以在EditText
中使用不同的背景,当它为空时填充?
答案 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属性)并不难。
祝你好运。 (下次尝试对你的问题做出更多解释:))