Hacer emergente la tecla pulsada en un teclado personalizado

Estoy usando keyboardview para tener mi propio teclado.

Funciona bien, pero no puedo hacer el efecto de ampliar la tecla presionada, al igual que el teclado de Android

Ampliar imagen

Estas son las partes que utilizan

<android.inputmethodservice.KeyboardView android:id="@+id/keyboardview" style="@style/Widget.KeyboardView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:focusable="true" android:focusableInTouchMode="true" android:shadowRadius="0" android:visibility="visible" /> 

.

  <style name="Widget.KeyboardView" parent="android:Widget.KeyboardView"> <item name="android:background">@drawable/naranja</item> <item name="android:keyBackground">@drawable/naranja</item> <item name="android:keyTextSize">40sp</item> <item name="android:keyTextColor">#d35400</item> <item name="android:keyPreviewLayout">@layout/keyboard_popup_keyboard</item> <item name="android:keyPreviewOffset">12dp</item> <item name="android:keyPreviewHeight">80dp</item> <item name="android:popupLayout">@layout/keyboard_popup_keyboard</item> </style> 

.

XML / popup:

  <?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> 

Filas

  <Key android:codes="81" android:keyEdgeFlags="left" android:keyLabel="Q" android:popupCharacters="Q" android:popupKeyboard="@xml/popup" /> etc... 

He intentado con método onKey, también desde el XML. Pero sin éxito.

Para mostrar las vistas previas ampliadas, KeyboardView debería hacerlo de forma predeterminada. No desea establecer un valor de popupKeyboard como esto es para un mini teclado especial que se muestra en presiones largas.

Supongo que siguió este tutorial . Tome nota de estas líneas en la sección 3.3:

 // Do not show the preview balloons mKeyboardView.setPreviewEnabled(false); 

En su lugar, establezca esto como true .

Solución completa

En el diseño de su actividad:

 <android.inputmethodservice.KeyboardView android:id="@+id/keyboardview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:focusable="true" android:focusableInTouchMode="true" android:keyPreviewOffset="12dp" android:keyPreviewLayout="@layout/kbpreview" android:visibility="visible" /> 

Las propiedades importantes aquí son keyPreviewLayout , keyPreviewOffset y keyPreviewHeight .

Layout / kbpreview.xml

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:gb="http://schemas.android.com/apk/res-auto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:background="@color/red" android:textSize="30dp" /> 

Xml / kb.xml

 <?xml version="1.0" encoding="utf-8"?> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="12.50%p" android:keyHeight="10%p" > <Row> <Key android:codes="55" android:keyLabel="7" android:keyEdgeFlags="left" /> <Key android:codes="56" android:keyLabel="8" /> <Key android:codes="57" android:keyLabel="9" /> <Key android:codes="65" android:keyLabel="A" android:horizontalGap="6.25%p" /> <Key android:codes="66" android:keyLabel="B" /> <Key android:codes="55006" android:keyLabel="CLR" android:keyEdgeFlags="right"/> </Row> <!-- and whatever else... --> </Keyboard> 

En tu código de actividad

  Keyboard mKeyboard = new Keyboard(this, R.xml.kb); // Lookup the KeyboardView KeyboardView mKeyboardView = (KeyboardView) findViewById(R.id.keyboardview); // Attach the keyboard to the view mKeyboardView.setKeyboard(mKeyboard); // Key listener required mKeyboardView.setOnKeyboardActionListener(myListener); 

Resultado

Con la tecla '5' presionada:

Introduzca aquí la descripción de la imagen

También puede resultar útil comprobar el código fuente de KeyboardView .

  • ¿Cómo escuchar la pulsación de teclas en el teclado suave?
  • Soft teclado no está presente, no se puede ocultar el teclado - Appium android
  • Cómo agregar "Siguiente" en el teclado android
  • AdjustResize no funciona después de despedir el teclado haciendo clic en el teclado exterior
  • Problema de enfoque de teclado Android personalizado
  • Android detecta ocultar teclado en modo horizontal
  • Cómo bloquear / desbloquear el teléfono mediante programación: Android
  • Cómo forzar el teclado con números en el sitio web para móviles en Android
  • ¿Puede Android emular un dispositivo HID?
  • Ajusta scrollview cuando el teclado está hacia arriba
  • El teclado suave de Android se esconderá sin motivo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.