我正在开发一个软键盘并且做得很好,但是我不知道如何为长按键自定义弹出布局.
I'm developing a soft keyboard and doing well, but I don't know how to customize the popup layout for a long keypress.
<?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 属性 放在任何地方,但没有成功.我试着说:
I tried putting keyBackground and background properties everywhere, but not successfully. I tried to put:
android:popupLayout="@layout/keyboard"
...在 keyboardView 上但得到空指针,也许我在该参数中输入了错误的 XML?
...On the keyboardView but get nullpointer, maybe I'm putting a wrong XML in that parameter?
在我放在这里的键盘弹出 XML中:
In the keyboard popup XML that I put here:
android:popupKeyboard="@xml/keyboard_popup"
我可以更改布局的大小、键大小、键间距和其他内容,但不能更改颜色或背景.
I can change the layout's size, key size, key gap, and other things, but can't change the colors or backgrounds.
key preview也不错,我把这个放在keyboardView上:
The key preview also is doing well, I put this on the keyboardView:
android:keyPreviewLayout="@layout/preview"
...它的工作原理.我认为弹出窗口应该是相同的方式,但事实并非如此.
...And it works. I think the popup should be the same way, but it's not.
嗯,这不是我想要的,但这解决了问题.
Well, it is not exactly what I was looking for, but this resolves the problem.
我制作了自己的键盘视图,并制作了一个弹出窗口来显示何时长按某个键.
I made my own keyboard view and made a popup window to show when a key is long pressed.
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);
return true;
}
}
这样您就可以在 xml 中以任何您想要的方式自定义弹出窗口.
This way you can customize the popup any way you want in the xml.
但这不是正确的答案,如果您知道更好的方法,请回答这个问题.
But this is not the correct answer, if you know a better way to do this please answer this question.
这篇关于软键盘的 POPUP 布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
出现键盘时如何在iOS上调整UITextView的大小?How to resize UITextView on iOS when a keyboard appears?(出现键盘时如何在iOS上调整UITextView的大小?)
如何可靠地检测 iOS 9 上是否连接了外部键盘?How to reliably detect if an external keyboard is connected on iOS 9?(如何可靠地检测 iOS 9 上是否连接了外部键盘?)
如何关闭 iOS 键盘?How do I dismiss the iOS keyboard?(如何关闭 iOS 键盘?)
是否可以在 ios 越狱后使用外部键盘模拟触摸事件Is possible to simulate touch event using an external keyboard on ios jailbroken?(是否可以在 ios 越狱后使用外部键盘模拟触摸事件?)
Android 上的数字软键盘Numeric Soft Keyboard on Android(Android 上的数字软键盘)
如何从 iOS 应用程序上的自定义键盘检索击键?How do I retrieve keystrokes from a custom keyboard on an iOS app?(如何从 iOS 应用程序上的自定义键盘检索击键?)