时间:2021-12-31 09:08:00 | 栏目:Android代码 | 点击:次
我正在开发一个软键盘,做得很好,但是我不知道如何自定义一个长按键的弹出窗口.
我的键盘视图:
<?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:
<?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和背景属性放在任何地方,但不成功.我试图把:
android:popupLayout="@layout/keyboard"
…在keyboardView上得到nullpointer,也许我在该参数中输入了错误的XML?
在我放在这里的键盘弹出式XML中:
android:popupKeyboard="@xml/keyboard_popup"
我可以改变布局的大小,按键大小,键间距等等,但不能改变颜色或背景.
关键预览也做得很好,我把它放在keyboardView上:
android:keyPreviewLayout="@layout/preview"
…它的工作原理我认为弹出窗口应该是一样的,但不是这样.
如何自定义出现长按键的弹出式窗口?
那么这不是我正在寻找的,而是解决了这个问题.
我自己创建了键盘视图,并弹出一个弹出窗口来显示一个键长时间按下.
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中以任何方式自定义弹出窗口.
但是这不是正确的答案,如果你知道一个更好的方法来回答这个问题.
http://stackoverflow.com/questions/34799775/soft-keyboards-popup-layout