Deshabilitar una tecla en el teclado personalizado de Android

Tengo teclado personalizado en mi aplicación para Android. Es el diseño descrito en xml como este

<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent""> <Row> <Key android:keyLabel="F1" android:keyOutputText="F1"/> <Key android:keyLabel="F2" android:keyOutputText="F2"/> <Key android:keyLabel="F3" android:keyOutputText="F3"/> ... 

Por lo tanto, estoy insteresting cómo puedo desactivar, por ejemplo 'f1' clave ~ que sea gris e intocable. Hay algunas preguntas similares aquí, pero todo sobre soft-KB por defecto.

Sé que puedo iterar a través de claves como esta

 for (Keyboard.Key key : myKeyboard.getKeys()) 

Pero parece que los objetos de la clase Keyboard.Key son inútiles para cualquier cambio en la apariencia de la clave.

UPD : No encontré solución. Implementé el teclado manualmente – diseño relativo grande, botones comunes y botones personalizados y todo bien. Por cierto – teclado personalizado al menos más hermoso. Simplemente copie recursos de droid 4+ – y obtendrá bonitos botones transparentes modernos y diseño transparente en cada plataforma.

3 Solutions collect form web for “Deshabilitar una tecla en el teclado personalizado de Android”

Actualmente estoy usando android:horizontalGap para colocar un espacio negro (con el ancho de una tecla) en el lugar donde se debe colocar la clave desactivada (de esta manera, puedo ocultar claves no permitidas en cada pantalla, porque mi teclado siempre ha La misma distribución). Es una solución pobre, sin embargo.

El principal problema es para las teclas más a la derecha, desde android:horizontalGap sólo se puede establecer para el lado izquierdo de una tecla. Pero usando un android:keyWidth="0" en una clave falsa más a la derecha y luego establecer allí el android:horizontalGap adecuado android:horizontalGap , hace el truco. Una solución aún más pobre …

¿Alguna solución mejor?

Por lo general, el teclado sólo es visible si está editando algo, por lo que puede atrapar las ediciones a través del objeto. Si es un cuadro editText, entonces puede agregar un escucha y, a continuación, puede desactivar cualquier respuesta al texto de edición. No estoy seguro de si esto es útil para usted, pero al menos puede atrapar cualquier entrada no deseada.

  // add a keylistener to keep track user input editText.setOnKeyListener(new View.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { // if keydown and "enter" is pressed if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { // do some thing or nothing return true; } return false; } }); 

Si la tecla es un botón, entonces es simple:

 key.setEnabled(false); 

De lo contrario, basta con hacer que no haga clic:

 key.setClickable(false); 

… y cambiar su aspecto (color de fondo, color de texto, etc.). La forma más sencilla de hacerlo es:

 key.setBackgroundColor("0xFFAAAAAA"); 
  • SearchView gana el foco y abre el teclado cuando regresa de otra actividad
  • Teclado Emoji en la aplicación
  • ¿Cómo mostrar el teclado virtual perfectamente en fragmento en Android?
  • VS emulador para Android deja de responder al teclado
  • Problemas de teclado surgidos en el cambio de orientación
  • El teclado de Android coloca la barra de pestañas en la parte superior
  • Android: Cómo evitar que el diseño se presione cuando se invoca el teclado
  • Teclado personalizado es ocultar el cuadro Editar en Android
  • Mostrar el teclado virtual cuando se inicia la actividad
  • Teclado personalizado sombra clave de teclado eliminar
  • Ocultar teclado virtual al hacer clic en un botón
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.