Можно ли использовать разные фоны в EditText
, когда он пуст и заполнен?Разный фон для пустых и заполненных EditText
ответ
вы можете создать подкласс 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);
}
});
Вы можете создать наблюдателя текста и добавить его в EditText. Изменение макета родителей (свойство backgroundColor) внутри не сложно.
удачи. (В следующий раз постараюсь быть более информативным на ваш вопрос :))
Я хотел бы добавить: если вы собираетесь чтобы иметь несколько из них, может оказаться целесообразным подкласс EditText и дать этому подклассу второстепенный атрибут фона, так что это можно обработать через макет xml. – Haem
Это может быть достигнуто только в том случае, если вы начали использовать 2-Way Databind Android. Это единственный способ, с помощью которого XML-макеты принимают условия. Подробнее читайте на: https://developer.android.com/topic/libraries/data-binding/index.html#expression_language –
Я думал о строках выполнения условий в коде подкласса и добавлял атрибут, называемый , например, «secondarybackground», как в учебнике [Создание класса вида] (https://developer.android.com/training/custom-views/create-view.html). – Haem
Вы можете нажать на свой ответ на один шаг дальше и предоставить код xml ^^. – AnixPasBesoin
xml код для чего? – lelloman
Для использования пользовательского EditText. – AnixPasBesoin