Intereting Posts
Использование SurfaceTexture, заполненного предварительным просмотром камеры, как вход Renderscript. Выделение в Jelly Bean Как сбросить Android Studio Проблемы с транзакциями PayPal MECL Значение красного цвета в графических файлах Nine-patch для Android Результаты пользовательского кругового обнаружения в «java.lang.UnsupportedOperationException» при приостановке? Как я могу использовать SensorManager.getOrientation для управления наклоном, например «My Paper Plane»? Гиперссылка в описании Android Market OnPostExecute не вызывается в AsyncTask (исключение выполнения обработчика Handler) Уведомление многострочное Использование ListView для создания экрана настроек в Android? Перезагрузка данных на вкладке, выбранной в фрагменте, с использованием пейджера просмотра Шаблон, чтобы сделать AsyncTask "процедурным" Медленная загрузка на Android-эмулятор Создайте проект библиотеки Android с помощью Ant Заполните поля в веб-просмотре автоматически

Формат POPUP для мягкой клавиатуры

Я разрабатываю мягкую клавиатуру и преуспеваю, но я не знаю, как настроить всплывающий макет для длительного нажатия.

My KeyboardView:

<?xml version="1.0" encoding="UTF-8"?> <android.inputmethodservice.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/keyboard" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:keyPreviewLayout="@layout/preview" android:keyBackground="@drawable/key_selector" android:shadowRadius="0.0" android:keyTextColor="#000000" /> 

Моя раскладка клавиатуры:

 <?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"> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p"> <Key android:codes="113" android:keyLabel="q" /> <Key android:codes="119" android:keyLabel="w" /> <Key android:codes="101" android:keyLabel="e" /> <Key android:codes="114" android:keyLabel="r" /> <Key android:codes="116" android:keyLabel="t" /> <Key android:codes="121" android:keyLabel="y" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="yýÿ"/> <Key android:codes="117" android:keyLabel="u" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="uúùũûü"/> <Key android:codes="105" android:keyLabel="i" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="iíìĩîï"/> <Key android:codes="111" android:keyLabel="o" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="oóòõôö" /> <Key android:codes="112" android:keyLabel="p" /> </Row> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p"> <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="5%p" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="aáàãâä"/> <Key android:codes="115" android:keyLabel="s" /> <Key android:codes="100" android:keyLabel="d" /> <Key android:codes="102" android:keyLabel="f" /> <Key android:codes="103" android:keyLabel="g" /> <Key android:codes="104" android:keyLabel="h" /> <Key android:codes="106" android:keyLabel="j" /> <Key android:codes="107" android:keyLabel="k" /> <Key android:codes="108" android:keyLabel="l" /> </Row> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p"> <Key android:codes="3" android:keyIcon="@drawable/keyboard_shift_off" android:keyHeight="7.6%p" android:keyWidth="13.7%p"/> <Key android:codes="122" android:keyLabel="z" android:horizontalGap="1%p"/> <Key android:codes="120" android:keyLabel="x" /> <Key android:codes="99" android:keyLabel="c" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="cç"/> <Key android:codes="118" android:keyLabel="v" /> <Key android:codes="98" android:keyLabel="b" /> <Key android:codes="110" android:keyLabel="n" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="nñ"/> <Key android:codes="109" android:keyLabel="m" /> <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete_dim" android:keyHeight="7.6%p" android:keyWidth="13.7%p" android:horizontalGap="1%p"/> </Row> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p"> <Key android:codes="-16" android:keyIcon="@drawable/keyboard_symbol" android:keyHeight="7.6%p" android:keyWidth="18.7%p"/> <Key android:codes="44" android:keyLabel="," android:horizontalGap="1%p"/> <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_feedback_space" android:keyWidth="40%p"/> <Key android:codes="46" android:keyLabel="."/> <Key android:codes="-3" android:keyIcon="@drawable/keyboard_go" android:keyHeight="7.6%p" android:keyWidth="18.5%p" android:horizontalGap="1%p"/> </Row> 

Всплывающее меню клавиатуры:

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

Я пробовал использовать свойства keyBackground и background везде, но не успешно. Я попытался поставить:

 android:popupLayout="@layout/keyboard" 

… На клавиатуреView, но получите nullpointer, возможно, я помещаю неправильный XML в этот параметр?

В клавиатуре popup XML, который я поставил здесь:

 android:popupKeyboard="@xml/keyboard_popup" 

Я могу изменить размер макета, размер ключа, ключевой пробел и другие вещи, но не могу изменить цвета или фон.

Ключевой предварительный просмотр также преуспевает, я положил это на клавиатуруView :

 android:keyPreviewLayout="@layout/preview" 

… И это работает. Я думаю, что всплывающее окно должно быть таким же, но это не так.

Как настроить всплывающее окно, которое появляется для длинного нажатия клавиши?

Solutions Collecting From Web of "Формат POPUP для мягкой клавиатуры"

Ну, это не совсем то, что я искал, но это решает проблему.

Я сделал свой собственный вид клавиатуры и сделал всплывающее окно, чтобы показать, когда клавиша долго нажата.

 public class MyKeyboardView extends KeyboardView{ @Override protected boolean onLongPress(final Key popupKey) { final View custom = LayoutInflater.from(context) .inflate(R.layout.popup_layout, new FrameLayout(context)); popup = new PopupWindow(context); popup.setWidth(WindowManager.LayoutParams.WRAP_CONTENT); popup.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); popup.showAtLocation(this, Gravity.NO_GRAVITY, popupKey.x, popupKey.y-50); } } 

Таким образом вы можете настроить всплывающее окно любым способом, который вы хотите в xml.

Но это не правильный ответ, если вы знаете лучший способ сделать это, ответьте на этот вопрос.