Android TextView: как динамически изменять макет при вводе текста
Мне нужно сделать кнопку "видимой" или "исчезнувшей" динамически по мере того, как пользователь вводит текст в поле TextView. Используя приведенный ниже оператор, я смог выполнить это при нажатии Enter, но было бы здорово, если бы кнопка стала видимой или исчезла сразу же, когда пользователь вводит или удаляет текстовое содержимое. Любое предложение?
binding.textField.setOnEditorActionListener { v, actionId, event ->
if (v.text.toString().trim().isEmpty()){
binding.button.visibility = View.GONE
} else{
binding.button.visibility = View.VISIBLE
}
return@setOnEditorActionListener true
}
Заранее благодарю за внимание! Родриго Томаз.
3 ответа
Вы можете использовать addTextChangedListener
в вашем EditText.
Нравится:
binding.textField.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (editable.toString().trim().isEmpty()){
binding.button.visibility = View.GONE
} else{
binding.button.visibility = View.VISIBLE
}
}
});
Надеюсь, что это поможет:)
Вы должны добавить textchangelistner в свой редактируемый текст и скрыть кнопку при изменении текста
binding.textField.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
binding.button.visibility = View.GONE
}
});
Kotlin предлагает упрощенный доступ к функциям переопределения. Вот моя последняя (рабочая) реализация, к сожалению:
binding.textField.doAfterTextChanged { text: Editable? ->
if (text.toString().trim().isEmpty()){
binding.button.visibility = View.GONE
} else{
binding.button.visibility = View.VISIBLE
}