Intereting Posts
Перенастройка растрового изображения на Google Maps v2 для Android Читать файл из активов «ArrayAdapter требует, чтобы идентификатор ресурса был проблемой TextView» xml После того, как кнопки изменения ориентации на виджете не отвечают IllegalStateException: невозможно изменить идентификатор контейнера фрагмента Разница между поддержкой android-v7-appcompat и android-support-v4 Ошибка преобразования байт-кода в dex: Причина: java.lang.RuntimeException: Исключение классов разбора – Android studio 2.0 beta 6 Перехват и переопределение HTTP-запросов из WebView Android ExoPlayer – загрузка видео (не DASH / HLS) и потоковое воспроизведение в одно и то же время Запуск активности из сервиса после нажатия кнопки HOME без задержки 5 секунд Что произойдет, если служба облачных данных Parse завершится с ошибкой? Создание жестких ссылок и Symlinks в Android Как использовать поддержку FileProvider для обмена контентом с другими приложениями? Как решить INSTALL_FAILED_DEXOPT эту ошибку? Какова семантика withValueBackReference?

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

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

Отлично работает, но я не могу сделать эффект увеличения нажатой клавиши, так же как и клавиатура 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 .