2012-02-16 15 views
10

Mi objetivo es mostrar/ocultar el teclado del software en pantalla en algún evento e interceptar la entrada de ese teclado.Mostrar teclado de software sin EditText

Descubrí que el teclado virtual se puede mostrar para algunos descendientes de la clase View, pero no necesito ninguna representación visual del widget de edición de texto en la pantalla, solo la capacidad de mostrar programáticamente hide soft keyboard con intercepción de entrada.

¿Cuál es la mejor manera de lograr esto?

Respuesta

3

Puede forzar la Softkeyboard que se muestra mediante el uso de:

InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED); 

y para ocultar:

((InputMethodManager) YourActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(findViewById(R.id.YOUR_VIEW).getWindowToken(), 0); 
+0

Este método no funcionó. showSoftInput devuelve falso y no se muestra ningún teclado – Nekuromento

+0

debería funcionar, pero puede intentar la siguiente línea: im.showSoftInput (this, InputMethodManager.SHOW_IMPLICIT); – Vikram

15

Incluso si esta pregunta se hizo hace casi un año que no tenían una Aceptada y una respuesta totalmente útil, y como me encontré con el mismo problema, pensé que compartiría mi solución:

Como Vikram señaló esta es la manera de mostrar la entrada suave:

InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED); 

PERO también debe establecer su punto de vista como enfocable y enfocable en el modo de contacto:

myView.setFocusable(true); 
myView.setFocusableInTouchMode(true); 

o en su vista XML:

android:focusable = "true" 
android:focusableInTouchMode = "true" 
+0

¿Cómo se intercepta la entrada del teclado? – bgolson

+1

Tienes que ser un poco más específico. Interceptar de qué manera? Puede anular View.onKeyDown (int keyCode, KeyEvent event). ¿Es eso lo que quieres decir? – britzl

+0

+1 ¡Gracias! Eso es lo que estaba buscando. – bgolson

2

En realidad, puede always espectáculo una entrada de teclado suave desde manifiesto. añadir esta línea a cada actividad que desea mostrar teclado de software:

android:windowSoftInputMode="stateAlwaysVisible" 

teclado suave se mostrará sin importar si no hay EditarTexto en la vista. ejemplo:

<activity android:name=".ChatActivity" 
    android:windowSoftInputMode="stateAlwaysVisible"> 

</activity> 
Cuestiones relacionadas