Intereting Posts

Формат 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.

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