【问题标题】:Android on-screen keyboard and B4AAndroid 屏幕键盘和 B4A
【发布时间】:2011-10-28 02:49:49
【问题描述】:

我想知道屏幕键盘 (osk)。

当我处于纵向模式时,osk 会显示在屏幕底部,并且只会覆盖我应用的下部。这是理想的,因为您仍然可以看到位于应用程序上部的我的文本框。但是当方向更改为横向时,osk 会用自己的文本区域覆盖整个应用程序(隐藏我的文本框)。

此 osk 文本区域仅在横向模式下显示。这是 osk 在所有 Android 上的行为方式,还是特定于三星 Tab 7" 或其他?

有没有办法阻止 osk 在横向模式下显示自己的文本框?如果没有,我将不得不设计自己的 osk。如果我确实设计了自己的 osk,我还能通过 B4A 来利用 Android 的自动完成功能吗?

我已经尝试过 AutoCompleteEditText,但它的工作方式与 Android 自动完成的方式不同,这更接近我的需要。

有什么建议吗?

感谢您的帮助,

鲍勃·盖特利

【问题讨论】:

    标签: basic4android


    【解决方案1】:

    更好的答案。您可以使用反射库来禁用全屏键盘:

    Dim r As Reflector
    r.Target = EditText1
    r.RunMethod2("setImeOptions", 268435456, "java.lang.int") 'IME_FLAG_NO_EXTRACT_UI constant
    

    【讨论】:

    • 啊哈!我还没有看过反射库。感谢您提供代码示例 - 我会试一试。
    • 反射代码示例是完美的解决方案。现在屏幕键盘只显示键盘(和自动完成),并没有覆盖我的应用程序的其余部分。现在我不必重新发明键盘和自动完成。我想了解更多关于反射的信息。非常感谢!
    【解决方案2】:

    这是所有 Android 在横向模式下的默认行为。 您可能希望看到此link 以了解自定义键盘的实现:

    【讨论】:

    • 感谢 Erel 的快速回复。我已经查看了自定义键盘的链接,并且可以看到使用这些示例作为制作我自己的键盘的起点。如果我自己制作键盘,我仍然需要以类似于 Android 键盘的方式提供自动完成功能。有没有办法从 B4A 访问 Android 自动完成库?
    • PS:我正在使用另一个 Android 编程应用程序,与屏幕键盘关联的文本区域在横向模式下不显示 - 只有键盘可见,测试应用程序仍然可见在屏幕的上半部分。我的猜测是因为应用程序在浏览器中运行(HTML5)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多