Измените фокус Edittext и заставьте ImageView исчезнуть

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

Я надеюсь, что это может вам помочь.