Android: Cuando el teclado en pantalla aparece y desaparece, ¿hay algún oyente que se llama automáticamente?

Me preguntaba si hay alguna manera de ser notificado automáticamente por Android cuando se muestra el teclado en pantalla y cuando desaparece.

Por ejemplo, cuando hacemos clic en un editext, aparece el ime. ¿Habrá alguna llamada de evento? Y cuando desaparece cuando presionamos hacia atrás, de manera similar habrá alguna llamada?

He encontrado este hilo Android: ¿qué evento se activa cuando aparece el teclado en pantalla? , Sin embargo aún no se han alcanzado respuestas.

El propósito es porque necesito un evento para manipular automáticamente la visibilidad. Tengo una actividad con un edittext en la parte superior de la pantalla, debajo de ella, un listview y un linearlayout que están sentados uno encima del otro. Para controlar lo que ve el usuario, manipulo la visibilidad. De forma predeterminada, el lineallayout se muestra inicialmente, sin embargo, cuando el usuario escribe texto, se debería mostrar la vista de lista. El listview debe desaparecer cuando el usuario ha terminado de escribir, que en este caso, el teclado en pantalla se cerrará.

He intentado realizar el cambio de visibilidad usando onFocusChange, sin embargo, incluso cuando el teclado en pantalla desaparece, el edittext todavía conserva el foco y el linearlayout nunca reaparece.

A continuación se muestra mi implementación del método onFocusChange

@Override public void onFocusChange(View v, boolean hasFocus) { if(v.getId()==R.id.search_screen_keyword_textbox) { if(hasFocus) { filterSection.setVisibility(View.GONE); autoComSection.setVisibility(View.VISIBLE); } else { filterSection.setVisibility(View.VISIBLE); autoComSection.setVisibility(View.GONE); } } else if(v.getId()==R.id.search_screen_location_textbox) { if(hasFocus) { filterSection.setVisibility(View.GONE); autoComSection.setVisibility(View.VISIBLE); } else { filterSection.setVisibility(View.VISIBLE); autoComSection.setVisibility(View.GONE); } } else { filterSection.setVisibility(View.VISIBLE); autoComSection.setVisibility(View.GONE); } } 

Si alguien tiene alguna idea sobre ello, házmelo saber. :RE

    Usted puede coger el botón de nuevo cuando en un edittext, esto es lo que haría desaparecer el teclado. Utilizando este método:

      public boolean onKeyPreIme(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { // Do your thing here return false; } return super.dispatchKeyEvent(event); } 

    La búsqueda es genial: onKeyPreIme o la API de Android

    Parece que este hilo tiene una solución usando onConfigurationChanged: ¿Cómo capturar el "virtual keyboard show / ocultar" evento en Android?

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.