禁用键预览很容易:只需调用setPreviewEnabled(false),这些烦人的小预览就不会再出现了.但是如果我将一个弹出式键盘附加到任何键上,那么这些预览将显示在该弹出窗口中:
qwerty.xml:
<Key android:codes="101"
android:keyLabel="E"
android:popupKeyboard="@xml/popup"
android:keyTextSize="60sp"/>
Run Code Online (Sandbox Code Playgroud)
popup.xml:
<Row>
<Key android:codes="-10000"
android:keyLabel="test"
android:keyOutputText="test"/>
</Row>
<Row>
<Key android:codes="-10001"
android:keyLabel="test2"
android:keyOutputText="test2"/>
</Row>
Run Code Online (Sandbox Code Playgroud)
无法发布图片,但如果我长按字母'E'然后按test或test2按钮,他们将显示白键预览.
有没有办法禁用这些关键预览呢?
我有自定义Android键盘:
public class CustomKeyboard extends Keyboard{...}
public class CustomKeyboardView extends KeyboardView{...}
public class CustomKeyboardIME extends InputMethodService implements KeyboardView.OnKeyboardActionListener{...}
Run Code Online (Sandbox Code Playgroud)
在一些按键,我有popupKeyboard和popupCharacters:
<Key android:codes="144" android:keyLabel="0" android:popupKeyboard="@xml/key_popup" android:popupCharacters=")" android:keyEdgeFlags="right"/>
Run Code Online (Sandbox Code Playgroud)
XML/key_popup.xml:
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="10%p"
android:horizontalGap="0px"
android:verticalGap="0px"
android:keyHeight="@dimen/key_height" >
</Keyboard>
Run Code Online (Sandbox Code Playgroud)
但是当我长按"0"键弹出")"显示时,它会一直保持在那里直到我按下"X"按钮或")"字符.它看起来像这样:

而且我希望它只在我按住手指时打开.像三星或HTC键盘上的东西:
有谁可以帮助我吗?
编辑至少可以改变这个弹出窗口的外观吗?我希望它具有与我制作的整个键盘相同的背景和键
keyboard android keyboard-events android-softkeyboard android-input-method
创建自己的SoftKeyboard时,默认情况下会给出"键预览".

你怎么禁用这个?
编辑:
您可以keyPreview通过更改<KeyboardView>属性来自定义布局android:keyPreviewLayout.默认情况下,它会设置为查看keyboard_key_preview.xml:
编辑2: 跟随我成为红鲱鱼:
源代码建议提供0或不应用标记android:keyPreviewLayout将导致没有出现键预览:
...
case com.android.internal.R.styleable.KeyboardView_keyPreviewLayout:
previewLayout = a.getResourceId(attr, 0);
break;
...
if (previewLayout != 0) {
mPreviewText = (TextView) inflate.inflate(previewLayout, null);
mPreviewTextSizeLarge = (int) mPreviewText.getTextSize();
mPreviewPopup.setContentView(mPreviewText);
mPreviewPopup.setBackgroundDrawable(null);
} else {
mShowPreview = false;
}
Run Code Online (Sandbox Code Playgroud)
我试过了:
keyPreviewLayout一个id为0的id引用(导致通胀崩溃).难住了.:( 任何帮助将不胜感激!
我正在开发一个软键盘并且运行良好,但我不知道如何为长按键自定义弹出式布局.
<?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"
/>
Run Code Online (Sandbox Code Playgroud)
<?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"> …Run Code Online (Sandbox Code Playgroud) 我有一个为我处理输入的视图,我弹出一个键盘并将视图设置为可聚焦。现在我可以得到某些按键...
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
} else if (keyCode == KeyEvent.KEYCODE_BACK) {
} else if (keyCode == KeyEvent.KEYCODE_ENTER) {
} else {
}
}
Run Code Online (Sandbox Code Playgroud)
等等......我通过使用得到的角色
event.getDisplayLabel()
Run Code Online (Sandbox Code Playgroud)
只要我只想要普通的字母 AZ,就可以工作。在其他语言中,通过长按软键盘上的普通字母可以访问更多字母……但是,onKeyDown/Up 无法检测到这些替代字母。我只能检测正常的字母,软键盘的标签。现在我的应用程序必须处理外国输入和字母,我已将键盘更改为土耳其语,我可以在键盘上找到 í ì ú ù 之类的字母,但是如果我按下它们,则没有任何反应。不是 event.getDisplayLabel 也不是 event.getUnicodeChar(); 我如何检测这些字母?
我正在尝试为android中的替代键创建自定义弹出键盘.通过使用默认键盘,我只能为pop键盘提供自定义布局.
我也需要自定义行为(就像Gboard中的一样)例如,
(1)当长按按钮时,默认情况下应突出显示特定的按键
(2)可以通过移动手指来突出显示和选择按键(长按键并同时移动手指)
这些是我引用的链接:
任何建议/帮助将不胜感激.
谢谢.