Disposición POPUP del teclado suave

Estoy desarrollando un teclado suave y lo hago bien, pero no sé cómo personalizar el diseño emergente para una pulsación larga.

Mi KeyboardView:

<?xml version="1.0" encoding="UTF-8"?> <android.inputmethodservice.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/keyboard" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:keyPreviewLayout="@layout/preview" android:keyBackground="@drawable/key_selector" android:shadowRadius="0.0" android:keyTextColor="#000000" /> 

Mi diseño de teclado:

 <?xml version="1.0" encoding="utf-8"?> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="10%p" android:keyHeight="10%p"> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p"> <Key android:codes="113" android:keyLabel="q" /> <Key android:codes="119" android:keyLabel="w" /> <Key android:codes="101" android:keyLabel="e" /> <Key android:codes="114" android:keyLabel="r" /> <Key android:codes="116" android:keyLabel="t" /> <Key android:codes="121" android:keyLabel="y" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="yýÿ"/> <Key android:codes="117" android:keyLabel="u" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="uúùũûü"/> <Key android:codes="105" android:keyLabel="i" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="iíìĩîï"/> <Key android:codes="111" android:keyLabel="o" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="oóòõôö" /> <Key android:codes="112" android:keyLabel="p" /> </Row> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p"> <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="5%p" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="aáàãâä"/> <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" /> </Row> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p"> <Key android:codes="3" android:keyIcon="@drawable/keyboard_shift_off" android:keyHeight="7.6%p" android:keyWidth="13.7%p"/> <Key android:codes="122" android:keyLabel="z" android:horizontalGap="1%p"/> <Key android:codes="120" android:keyLabel="x" /> <Key android:codes="99" android:keyLabel="c" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="cç"/> <Key android:codes="118" android:keyLabel="v" /> <Key android:codes="98" android:keyLabel="b" /> <Key android:codes="110" android:keyLabel="n" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="nñ"/> <Key android:codes="109" android:keyLabel="m" /> <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete_dim" android:keyHeight="7.6%p" android:keyWidth="13.7%p" android:horizontalGap="1%p"/> </Row> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p"> <Key android:codes="-16" android:keyIcon="@drawable/keyboard_symbol" android:keyHeight="7.6%p" android:keyWidth="18.7%p"/> <Key android:codes="44" android:keyLabel="," android:horizontalGap="1%p"/> <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_feedback_space" android:keyWidth="40%p"/> <Key android:codes="46" android:keyLabel="."/> <Key android:codes="-3" android:keyIcon="@drawable/keyboard_go" android:keyHeight="7.6%p" android:keyWidth="18.5%p" android:horizontalGap="1%p"/> </Row> 

El popup del teclado XML:

 <?xml version="1.0" encoding="utf-8"?> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="10%p" android:keyHeight="10%p"> </Keyboard> 

Intenté poner las características de keyBackground y del fondo por todas partes, pero no con éxito. Traté de poner:

 android:popupLayout="@layout/keyboard" 

… En el keyboardView pero obtener nullpointer, tal vez estoy poniendo un error XML en ese parámetro?

En el popup de teclado XML que pongo aquí:

 android:popupKeyboard="@xml/keyboard_popup" 

Puedo cambiar el tamaño de la disposición, el tamaño dominante, la abertura dominante, y otras cosas, pero no puedo cambiar los colores o los fondos.

La vista previa de la clave también lo está haciendo bien, lo puse en el keyboardView :

 android:keyPreviewLayout="@layout/preview" 

…Y funciona. Creo que el popup debe ser de la misma manera, pero no lo es.

¿Cómo puedo personalizar la ventana emergente que aparece durante una pulsación larga?

Bueno, no es exactamente lo que estaba buscando, pero esto resuelve el problema.

Hice mi propia vista de teclado e hizo una ventana emergente para mostrar cuando una tecla es presionada durante mucho tiempo.

 public class MyKeyboardView extends KeyboardView{ @Override protected boolean onLongPress(final Key popupKey) { final View custom = LayoutInflater.from(context) .inflate(R.layout.popup_layout, new FrameLayout(context)); popup = new PopupWindow(context); popup.setWidth(WindowManager.LayoutParams.WRAP_CONTENT); popup.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); popup.showAtLocation(this, Gravity.NO_GRAVITY, popupKey.x, popupKey.y-50); } } 

De esta manera usted puede personalizar el popup de cualquier manera que desee en el xml.

Pero esta no es la respuesta correcta, si usted sabe una mejor manera de hacerlo, por favor responda a esta pregunta.

  • EditText con teclado suave y botón "Atrás"
  • Encuentra el idioma del teclado Android actual
  • Teclado suave - Sólo numérico
  • Evita que los botones oculten el teclado virtual en Android
  • tabbar sube junto con el teclado
  • Cómo mantener el cajón deslizante de la parte superior del teclado virtual
  • Android Implementa dos fragmentos que tienen un comportamiento diferente cuando aparece el teclado
  • OnKeyDown en un servicio? (Teclas directas globales)
  • Android EditText ninguna entrada con external blueTooth Hardware Keyboard
  • ShowSoftInput no funciona después del cambio de orientación
  • ¿Cómo desactivo la barra de autocorrección en los teclados de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.