sugerencias - Android: ¿Cómo hacer que el teclado siempre esté visible?
personalizar teclado android (3)
En Android, ¿cómo hacemos que el teclado del dispositivo siempre esté visible en la aplicación? La parte superior muestra el contenido que la aplicación desea representar y la parte inferior muestra el teclado siempre.
Agregue android: windowSoftInputMode = "stateAlwaysVisible" a su actividad en el archivo AndroidManifest.xml:
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysVisible" />
En mi aplicación de prueba, esto muestra el teclado al inicio de la aplicación, aunque no está fijo allí, pero se puede descartar presionando el botón Atrás.
Para asegurarse de que el teclado esté siempre visible, es posible que deba crear su propio teclado como parte de la interfaz de usuario de su aplicación. Aquí hay un tutorial para mostrarle cómo hacer esto con KeyboardView: http://www.fampennings.nl/maarten/android/09keyboard/index.htm
Debe tener un EditText
en su diseño y que necesite EditText
clase base de EditText
. luego, reemplaza el método onKeyPreIme()
y devuelve True . Ahora su teclado estará siempre visible y no puede ser descartado por la tecla Atrás.
Precaución : Debido a que su método onKeyPreIme()
devuelve true
no puede salir de su aplicación utilizando la tecla Atrás.
Ejemplo:
public class CustomEdit extends EditText {
public CustomEdit(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.e("Log", "onKeyPreIme");
return true;
//return super.onKeyPreIme(keyCode, event);
}
}
Encontré una manera que me funciona para mantener el teclado myEditText
visible después de una edición en mi campo myEditText
de la clase EditText
. El truco es anular el método onEditorAction
para que devuelva true
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
return true;
}
});
o bien, tiene onEditorAction
return true
solo después del clic "Hecho" ( IME_ACTION_DONE
) de lo contrario false
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
Log.i(LOG_TAG, "IME_ACTION_DONE");
return true;
}
return false;
}
});
(vea también esta respuesta en el método onEditorAction
)
Agregar android:windowSoftInputMode="stateAlwaysVisible
to the Manifest file ayudó a que el teclado android:windowSoftInputMode="stateAlwaysVisible
mostrara al inicio de la actividad, pero no evitó que desapareciera nuevamente cada vez que se hacía clic en la tecla" Done "después de una edición.