相关疑难解决方法(0)

如何在弹出键盘中禁用键预览(不在主软键盘布局中)?

禁用键预览很容易:只需调用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 keypreview android-softkeyboard custom-keyboard

24
推荐指数
1
解决办法
2880
查看次数

Android长按自定义键盘弹出键盘

我有自定义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)

在一些按键,我有popupKeyboardpopupCharacters:

<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

18
推荐指数
1
解决办法
5001
查看次数

如何禁用SoftKeyboard键预览窗口?

创建自己的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的样式化KeyboardView(奇怪的是,替换此值会改变预览的样式.)
  • 我创建了keyPreviewLayout一个id为0的id引用(导致通胀崩溃).

难住了.:( 任何帮助将不胜感激!

android android-softkeyboard

17
推荐指数
1
解决办法
4894
查看次数

软键盘的POPUP布局

我正在开发一个软键盘并且运行良好,但我不知道如何为长按键自定义弹出式布局.

我的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"
/>
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óò&#245;ôö" />
    <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)

keyboard android popup android-layout android-softkeyboard

15
推荐指数
1
解决办法
2160
查看次数

Android SoftKeyboard onKeyDown/Up 未检测到“替代”键

我有一个为我处理输入的视图,我弹出一个键盘并将视图设置为可聚焦。现在我可以得到某些按键...

@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 android-softkeyboard

5
推荐指数
1
解决办法
8368
查看次数

为备用键创建自定义弹出键盘

我正在尝试为android中的替代键创建自定义弹出键盘.通过使用默认键盘,我只能为pop键盘提供自定义布局.

我也需要自定义行为(就像Gboard中的一样)例如,

(1)当长按按钮时,默认情况下应突出显示特定的按键

(2)可以通过移动手指来突出显示和选择按键(长按键并同时移动手指)

这些是我引用的链接:

构建自定义Android键盘

创建每个键具有多个/备用字符的SoftKeyboard

如何禁用SoftKeyboard键预览窗口?

这是Gboard中的弹出键盘 在此输入图像描述

任何建议/帮助将不胜感激.

谢谢.

android android-softkeyboard gboard

5
推荐指数
1
解决办法
636
查看次数