Espaciado en el teclado personalizado

Al hacer un teclado personalizado , puedo obtener un espacio principal (espacio a la izquierda) de una clave usando android:horizontalGap="6.25%p.
¿Cómo consigo el espacio al final (espacio a la derecha)?

 android:horizontalGap="6.25%p. 

Crea la brecha, que es antes de la clave que lleva el atributo horizontalGap . es decir. (Espacio a la izquierda) de una tecla.

p.ej.

 <Row> <Key android:codes="69" android:keyLabel="E" android:horizontalGap="6.25%p" /> <Key android:codes="70" android:keyLabel="F" /> </Row> 

Ahora agregue un horizontalGap (en el nivel de teclado) que es mayor que 0, el horizontalGap (en el nivel Clave) ya no crea un espacio antes pero ahora después de la clave que lleva el atributo horizontalGap . es decir. Espacio al final (espacio a la derecha) de una tecla

Para mí en Android 5.1 android:horizontalGap atributo android:horizontalGap funciona de la siguiente manera:

  • Si usted tiene en la suma de la fila de todo el android:keyWidth más de 100 entonces el boquete se exhibe después de la llave para la cual fue especificado.
  • Si la suma es menor que 100 entonces entonces la brecha es antes de la tecla

Por ejemplo. En este caso es antes

 <Row> <Key android:codes="97" android:keyLabel="a" android:horizontalGap="5%p" android:keyEdgeFlags="left"/> <Key android:codes="115" android:keyLabel="s"/> <Key android:codes="100" android:keyLabel="d"/> <Key android:codes="102" android:keyLabel="f"/> <Key android:codes="103" android:keyLabel="g"/> <Key android:codes="104" android:keyLabel="h"/> <Key android:codes="106" android:keyLabel="j"/> <Key android:codes="107" android:keyLabel="k"/> <Key android:codes="108" android:keyLabel="l"/> <Key android:codes="66" android:keyIcon="@drawable/enter_key" android:keyWidth="20%p" android:isRepeatable="true" android:keyEdgeFlags="right"/> </Row> 

Y cuando cambio sólo un valor, la brecha aparece después de:

 <Row> <Key android:codes="97" android:keyLabel="a" android:horizontalGap="5%p" android:keyEdgeFlags="left"/> <Key android:codes="115" android:keyLabel="s"/> <Key android:codes="100" android:keyLabel="d"/> <Key android:codes="102" android:keyLabel="f"/> <Key android:codes="103" android:keyLabel="g"/> <Key android:codes="104" android:keyLabel="h"/> <Key android:codes="106" android:keyLabel="j"/> <Key android:codes="107" android:keyLabel="k"/> <Key android:codes="108" android:keyLabel="l"/> <Key android:codes="66" android:keyIcon="@drawable/enter_key" android:keyWidth="22%p" android:isRepeatable="true" android:keyEdgeFlags="right"/> </Row> 

También tuve este problema. Nunca encontré una buena solución. API de diseño de teclado de Android es una mierda. Si estuviera haciendo esto de nuevo no lo habría usado y en su lugar creó mi propia interfaz de usuario desde cero interfacing con InputMethod directamente.

En cualquier caso, mi solución hack fue añadir una llave extra en la parte inferior del diseño con un ancho de 100% y sólo 1dp de altura. El botón no hace absolutamente nada y la altura es tan pequeña que el usuario no la ve. Pero el ancho de la clave soluciona el problema de la brecha.

La única solución es especificar keyWidth correcto para que la suma de keyWidth en una fila sea menor o igual que 100%. (Gracias @ Lemberg por su observación)

Para mi ejemplo he dividido 100 por 12 (número de teclas máximas en una fila) que es 8. (3) por lo tanto horizontalGap correcto para 11 llave de fila sería 8.33 / 2. (4.165 + 11 * 8.33 + 4.165 = 99.96 ~ 100)

 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="8.33%p" ... <Row> <Key android:codes="4304" android:keyLabel="ა" android:horizontalGap="4.165%p" android:keyEdgeFlags="left" /> <Key android:codes="4321" android:keyLabel="ს" /> <Key android:codes="4307" android:keyLabel="დ" /> <Key android:codes="4324" android:keyLabel="ფ" /> <Key android:codes="4306" android:keyLabel="გ" /> <Key android:codes="4336" android:keyLabel="ჰ"/> <Key android:codes="4335" android:keyLabel="ჯ"/> <Key android:codes="4313" android:keyLabel="კ"/> <Key android:codes="4314" android:keyLabel="ლ"/> <Key android:codes="4329" android:keyLabel="ჩ"/> <Key android:codes="4319" android:keyLabel="ჟ" android:keyEdgeFlags="right"/> </Row> 
  • Android: dígitos que no permiten el siguiente botón del teclado
  • ¿Cómo abrir el teclado numérico cuando haga clic en EditText?
  • Keycode para Android minimizar el botón de teclado suave
  • Cómo deshabilitar copiar / pegar de / a EditText
  • Controlar los botones Ok SoftKeyboard Android
  • Método onBackPressed no funciona correctamente
  • Mostrar teclado virtual en android TabLayout
  • ¿Cómo hacer que una vista de Android se desplace cuando aparece el teclado?
  • Abrir un teclado numérico sin forzar el EditText a ser sólo numérico
  • Android onKeyDown () no se ejecuta al presionar el botón Atrás
  • El teclado de Android WebView oculta el campo de entrada en el fragmento en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.