Сделать всплывающее окно с нажатой клавишей на пользовательской клавиатуре

Я использую клавиатуру, чтобы иметь собственную клавиатуру.

Отлично работает, но я не могу сделать эффект увеличения нажатой клавиши, так же как и клавиатура Android

Увеличить изображение

Это те части, которые используют

<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 / всплывающее окно:

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

Ряды

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

Я пробовал метод onKey, также из XML. Но безуспешно.

Solutions Collecting From Web of "Сделать всплывающее окно с нажатой клавишей на пользовательской клавиатуре"

Чтобы просто показать расширенные предварительные просмотры, KeyboardView должен делать это по умолчанию. Вы не хотите устанавливать значение popupKeyboard поскольку это для специальной мини-клавиатуры, которая отображается при длительных нажатиях.

Я предполагаю, что вы следовали этому руководству . Обратите внимание на эти строки в разделе 3.3:

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

Вместо этого установите для этого значение true .

Полное решение

В макете вашей деятельности:

 <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" /> 

Важными свойствами здесь являются keyPreviewLayout , keyPreviewOffset и keyPreviewHeight .

макет / 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> 

В вашем коде активности

  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); 

результат

С нажатой клавишей «5»:

Введите описание изображения здесь

Вам также может быть полезно проверить исходный код KeyboardView .