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.

One Solution collect form web for “Hacer emergente la tecla pulsada en un teclado personalizado”

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 .

  • Mostrar el teclado virtual cuando se inicia la actividad
  • React Native: Actualiza el diseño de la aplicación después de mostrar el teclado
  • Edittext.settext () cambia el tipo de teclado a predeterminado
  • Teclado emergente teclado personalizado de Android en prensa larga
  • Cómo deshabilitar emoji de ser introducido en Android EditText?
  • El teclado de Android coloca la barra de pestañas en la parte superior
  • NumberPicker en AlertDialog siempre activa el teclado. ¿Cómo desactivar esto?
  • Cómo ocultar el teclado automáticamente después de enviar correo electrónico usando el correo electrónico
  • Evento de teclado de hardware de captura de Android sin vista de edittext
  • Ocultación de teclados suaves en dispositivos móviles cuando se utilizan divs contenteditable
  • Comience un teclado diferente para diferentes actividades
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.