#android #imageview
#Android #imageview
Вопрос:
Я работаю над приложением, в котором есть два EditTexts и два ImageView (мой ImageView — это текст редактирования значка удаления)
Я хочу, чтобы, когда я устанавливаю фокус на editText1, появляется ImageView1 и исчезает imageView2, а когда я устанавливаю фокус на editText2, появляется imageView2 и исчезает ImageView1.
Я думаю, что я должен использовать TextWatcher()
методы вместо setOnKeyListener()
, но я не знаю, как это сделать.
Я написал этот код в onCreate()
методе, но у меня есть одна проблема: когда я устанавливаю фокус на editText1, я должен что-то написать в нем, чтобы отображалось изображение image_1, а изображение image_2 исчезало (и наоборот, когда я устанавливаю фокус на editText2)
editText1.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
image_1.setVisibility(View.VISIBLE);
image_2.setVisibility(View.INVISIBLE);
return false;
}
});
editText2.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
image_1.setVisibility(View.INVISIBLE);
image_2.setVisibility(View.VISIBLE);
return false;
}
});
Комментарии:
1. Попробуйте использовать setOnFocusChangeListener для edittext.
Ответ №1:
Я не думаю OnKeyListener
, что or TextWatcher
будет правильным решением для вашего требования.
Вместо этого вы хотите здесь OnFocusChangeListener
:
View.OnFocusChangeListener focusChangeListener1 = new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
image_1.setVisibility(View.VISIBLE);
image_2.setVisibility(View.INVISIBLE);
}
}
editText1.setOnFocusChangeListener(focusChangeListener1);
View.OnFocusChangeListener focusChangeListener2 = new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
image_1.setVisibility(View.INVISIBLE);
image_2.setVisibility(View.VISIBLE);
}
}
editText2.setOnFocusChangeListener(focusChangeListener2);
Комментарии:
1. да … вот и все, я написал этот код в методе onCreate(), и это работает.
Ответ №2:
Я думаю, вы можете использовать TextChangedListener:
editText1.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) {
imageView1.setVisibility(View.VISIBLE);
imageView2.setVisibility(View.INVISIBLE);
}
});
editText2.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) {
imageView1.setVisibility(View.INVISIBLE);
imageView2.setVisibility(View.VISIBLE);
}
});
Я надеюсь, что это может вам помочь.