2015-11-02 3 views
-1

Мне нужно показать Toolbar пункт меню, когда EditText получает фокус и скрывает его, когда EditText теряет фокус.Переключить вид элемента меню, когда эффект Edittext и потерять фокус

Я пытаюсь реализовать с помощью setOnFocusChangeListener на EditText, как показано ниже:

edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if (hasFocus) { 
       sendMenuItem.setVisible(true); 
      } else { 
       sendMenuItem.setVisible(false); 
      } 
     } 
}); 

но пункт меню показать и скрыть непрерывно onFocusChange() звонит несколько раз.

onFocusChange() вызывает несколько раз.

Это странно Logcat показывает мне следующее предупреждение:

requestLayout() неправильно наречено android.support.v7.widget.ActionMenuView

есть ли другой способ для достижения этой цели?

+0

Что вы имеете в виду, позвонив несколько раз? – Mohit

+0

Пожалуйста, скажите, что вы имели ввиду постоянно? –

+0

Если он работает и установлен на видимое значение true/false всякий раз, когда он находится в фокусе, он будет делать это ... поэтому вы должны сказать нам, что вы хотели бы изменить, поскольку он стоит, делая то, что вы хотите. –

ответ

0

Вы также можете использовать TextWatcher, чтобы узнать, что-либо введено в EditText или нет. А затем покажите/скройте свой MenuItem.

edittext.addTextChangedListener(new TextWatcher() { 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     textView.setVisibility(View.VISIBLE); 
    } 

    public void afterTextChanged(Editable s) { 
     if (s.length() == 0) { 
      sendMenuItem.setVisible(true); 
     } else { 
      sendMenuItem.setVisible(false); 
     } 
    } 
});