Ответ 1
Чтобы просто показать расширенные предварительные просмотры, 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
исходный код.