Soft keyboard#39;s POPUP layout(软键盘的 POPUP 布局)
问题描述
我正在开发一个软键盘并且做得很好,但是我不知道如何为长按键自定义弹出布局.
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 布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:软键盘的 POPUP 布局
基础教程推荐
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01