相关疑难解决方法(0)

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

我已经关注了developer.android.com上有关 输入法的示例,并使用了SoftKeyboard示例应用程序.这些共同提供了有关简单键盘创建的足够信息.

我在API中看不到的是能够在标准键盘(LatinIME键盘)上为每个键创建备用/多个字符.

在此输入图像描述

上面的图像是长按"a"键的结果.当您长按一个键时,可以使用替换字符填充弹出窗口.

在此输入图像描述

也可以在某些键上给出一个弹出提示,提示用户按住一个键以获得弹出菜单.

到目前为止,我还没有找到关于如何实现这一目标的单一信息来源,希望有人能够给我一个良好的开端,直到那时我将遵循内置键盘的源代码,看看我是否可以进行逆向工程它.

编辑:如果developer.android.com的LatinIME键盘链接没有链接到一个的图片会有帮助:) LatinIME.java的实际源代码.

编辑2:更多作为参考而不是其他任何东西,这是我认为通常的longPress操作通过以便在KeyboardView.java中显示弹出键盘的序列:

onTouchEvent()
onModifiedTouchEvent()
mHandkler.handleMessage() with MSG_LONGPRESS
openPopupIfRequired() 
onLongPress()
Run Code Online (Sandbox Code Playgroud)

编辑3:

我仍然没有想到这一点 - 如何向键添加标签建议?答案表明它没有内置到API中,事实上我还没有找到代码来执行此操作.但是,2.3.4(API 10)上的键盘显示正在实现此功能:

在此输入图像描述

非常想弄清楚IT是如何做到的,但它不是onDraw()我能看到的方法中的任何地方- 这让我相信它是在KeyboardView元素之外编写的.然而,我无法找到layout用于在内置键盘上显示KeyboardView元素的文件 - 如果有人知道在哪里找到这个也许会给我提供我需要的线索.

编辑4:移动键预览问题,因为它稍微偏离主题:

如何禁用SoftKeyboard键预览窗口?

android soft-keyboard android-softkeyboard

44
推荐指数
5
解决办法
2万
查看次数

如何禁用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
查看次数