versiones teclado sirve que pie personalizar para mostrar mejorar mejor ligero definicion configurar como caracteristicas activar android

sirve - personalizar teclado android



¿Hay alguna forma de saber si se muestra el teclado virtual? (4)

¿Hay alguna forma de saber si el teclado se muestra en una actividad o no?

Lo intenté

InputMethodManager manager = (InputMethodManager) getSystemService(getApplicationContext().INPUT_METHOD_SERVICE); manager.isActive(v)

pero isActive devuelve false solo antes de la primera vez que se muestra el teclado, pero si kb aparece y luego se descarta, isActive también devuelve true

Entonces, ¿hay algún otro método para verificar este problema?

Gracias


Esta es mi idea No está probado.

@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Checks whether a keyboard is available which is not hard keyboard if ((newConfig.keyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO)&&(newConfig.keyboardHidden != Configuration.HARDKEYBOARDHIDDEN_NO)) { Toast.makeText(this, "soft keyboard visible", Toast.LENGTH_SHORT).show(); } else if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_YES) { Toast.makeText(this, "soft keyboard hidden", Toast.LENGTH_SHORT).show(); } }


Por favor revise los cambios de configuración para su actividad

Esto para tu AndroidManifest.xml

y esto para su clase de actividad http://developer.android.com/reference/android/app/Activity.html#onConfigurationChanged(android.content.res.Configuration )

Necesitará @ Anular el método público onConfigurationChanged (android.content.res.Configuration) de su Actividad para poder manejar, por ejemplo, estos valores:
Teclado duro oculto ,
teclado
teclado oculto

Para todos los valores posibles, visite http://developer.android.com/reference/android/content/res/Configuration.html

Verás allí algo como esto:

HARDKEYBOARDHIDDEN_NO HARDKEYBOARDHIDDEN_UNDEFINED HARDKEYBOARDHIDDEN_YES KEYBOARDHIDDEN_NO KEYBOARDHIDDEN_UNDEFINED KEYBOARDHIDDEN_YES KEYBOARD_12KEY KEYBOARD_NOKEYS KEYBOARD_QWERTY KEYBOARD_UNDEFINED

También allí podrás leer algo como esto:

public int hardKeyboardHidden // A flag indicating whether the hard keyboard // has been hidden. public int keyboard The kind of keyboard attached to the device. public int keyboardHidden A flag indicating whether any keyboard is available.

ACTUALIZAR:

Aquí hay un ejemplo específico de lo que estoy hablando:

http://developer.android.com/guide/topics/resources/runtime-changes.html

@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Checks the orientation of the screen if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); } // Checks whether a hardware keyboard is available if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) { Toast.makeText(this, "keyboard visible", Toast.LENGTH_SHORT).show(); } else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) { Toast.makeText(this, "keyboard hidden", Toast.LENGTH_SHORT).show(); } }


Puede detectar el estado Y las coordenadas del teclado del software, usando el comando dumpsys shell.

Debido a que dumpsys requiere permission.android.DUMP , que es un permiso de aplicación del sistema, tiene dos opciones: 1. usar un dispositivo rooteado para otorgar este permiso. 2. sobrescriba el problema usando adb como se describe en mi otra respuesta .

Ahora, ejecute el siguiente comando: dumpsys window InputMethod | grep "mHasSurface" dumpsys window InputMethod | grep "mHasSurface" para obtener los datos que busca.


Según este POST

No puede detectar si se muestra o no el teclado virtual, pero puede saber indirectamente que se muestra un teclado de teclas programables al saber que la View de su actividad está redimensionada.

Imagina que tienes un ListView y en la parte inferior un EditText , quieres ir al final de la lista cuando se muestra un teclado virtual después de que el usuario haga clic en el EditText.

ListActivity implementar una subclase de ListView , luego usarla en su ListActivity o Activity o View .

public class ThreadView extends ListView { public ThreadView(Context context, AttributeSet attributeSet) { super(context, attributeSet); } @Override protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld) { super.onSizeChanged(xNew, yNew, xOld, yOld); if (yOld > yNew) { setSelection(((ListAdapter) getAdapter()).getCount() - 1); } } }

Espero que esto ayude

PD. "verificar cambios de configuración" solo funciona con el teclado de mano.