Как зафиксировать событие отображения/скрытия программной клавиши в Android?

В моем случае я скрываю программные клавиши в приложении, но иногда программные клавиши отображаются и скрываются при отображении уведомлений. В моем коде я использовал,

    View decorView = getWindow().getDecorView();

    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

    decorView.setSystemUiVisibility(uiOptions);

Есть ли какой-либо прослушиватель или обратный вызов для обнаружения, когда программные клавиши показывают/скрывают событие.

Спасибо...


person Trilok    schedule 21.07.2017    source источник


Ответы (2)


Попробуйте использовать OnFocusChangeListener() в тексте редактирования:

myEditText.setOnFocusChangeListener(new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if(!hasFocus){
            InputMethodManager imm = 
(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0);
        }               
    }
});
person Mukesh Sharma    schedule 21.07.2017
comment
спасибо .. но я говорю о программных клавишах, которые используются только для возврата и меню, а не для программной клавиатуры .. - person Trilok; 21.07.2017
comment
Ох. Ok. Вы пробовали onWindowFocusChanged?? Проверьте этот ответ: [ссылка] (stackoverflow.com/a/36966855/6345864) - person Mukesh Sharma; 21.07.2017
comment
Да.. попробую. но он не может обнаружить событие скрытия функциональной клавиши. - person Trilok; 21.07.2017

Попробуйте добавить

OnGlobalLayoutListener

поймать событие

contentView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {

      //try catching soft keys here
    }
    });
person Rai    schedule 21.07.2017
comment
спасибо .. но я говорю о программных клавишах, которые используются только для возврата и меню, а не для программной клавиатуры .. - person Trilok; 21.07.2017