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.
- Android: problemas de edittext y de teclado multilínea
- Cómo ocultar el teclado al ingresar la clave
- Android detecta ocultar teclado en modo horizontal
- SearchView gana el foco y abre el teclado cuando regresa de otra actividad
- Teclado personalizado es ocultar el cuadro Editar en Android
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.
- Cómo obtener la altura del teclado cuando la actividad creada en android
- OnKeyDown en un servicio? (Teclas directas globales)
- Teclado suave de Android no funciona
- Cómo abrir el teclado Android "123"
- Cómo hacer un teclado en pantalla curvo para Android
- Android - Detectar el teclado visible?
- Teclado Android. Antecedentes de Key
- Desarrollo de Android: atajo de gancho en el teclado cuando se centra la actividad de la aplicación de teléfono
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");
- Cordova App – error de herramienta de construcción – Gradle
- DevicePolicyManager.lockNow (); No apaga la pantalla cuando la configuración de seguridad está establecida en Slide / None