【问题标题】:Android: Tie a SoftKeyboard (InputMethodService) to an EditTextAndroid:将 SoftKeyboard (InputMethodService) 绑定到 EditText
【发布时间】:2011-04-28 15:33:39
【问题描述】:

我试图说服EditText-view 只使用我编写的软键盘。它已经让我烦恼了几天,我不敢相信这是不可能的。我可能看不到明显的......

到目前为止,我设法根据 Android SDK 附带的示例编写了自己的软键盘。我可以手动选择它作为输入法(长按、输入法、*pick*)。然后 SoftKeyboard 可以正常工作并完成我想要的一切。我还清理了上下文菜单以禁止更改输入法(显然我目前需要它在菜单中,否则我将无法选择我的软键盘)。

换句话说,唯一剩下的就是将软键盘绑定到EditText

我注意到EditText 上有一堆ime*-attributes,但它们似乎对我的问题没有用,因为我不想更改操作键的任何内容。 inputMethod 需要 KeyListener,SoftKeyboard 不是(我试图将其设为一个,但类加载器似乎有问题,因为它找不到我的 class=> ClassNotFoundException)。

谁能告诉我一些有用的信息?

【问题讨论】:

    标签: android keyboard android-softkeyboard


    【解决方案1】:

    我不敢相信这是不可能的

    我怀疑您写的是输入法编辑器,基于您的“手动选择”注释。这是一个全局结构,用户可以根据需要选择安装和使用。您的输入法编辑器可以由用户自行决定在设备中的任何应用程序中使用。

    无论您是否编写,您都不能在您的应用程序代码中强制使用特定的输入法编辑器。

    您可以做的,也许是安排在您的输入法编辑器中使用与您的活动中的某种弹出窗口相同的 UI。例如,KeyboardView,根据 Hackborn 女士的说法,是一个标准的View,可以像其他任何人一样使用。用户可以点击您的EditText 旁边的按钮来显示您的键盘 UI(例如,从屏幕底部向上滑动的动画),或类似的东西。

    我还清理了上下文菜单以禁止更改输入法

    请允许用户选择输入法,或者不要使用EditText

    【讨论】:

    • 是的,你明白我的问题。我不想让用户更改输入法,因为应用程序对按下的键有额外的逻辑。用户很清楚这一点(无论如何都没有违法)。事实上,我不希望输入法可用于除我之外的任何其他 EditText,否则会导致很多问题。基本上我需要确定我的应用程序是否有焦点,如果没有,则显示对话。好点子!我还会考虑强制我的 UI 出现在水龙头上。
    • @sjngm:“事实上,我不希望输入法可用于除我之外的任何其他 EditText,否则会导致很多问题。” ——那绝对不是输入法服务的好角色。不过,您可能仍然可以使用KeyboardView
    • @cw:对。我目前正在尝试将键盘放在屏幕上。但是,我在那里失败了(无论如何,这是我的第一个Android项目......)。示例 SoftKeyboard 使用从 KeyboardView 子类化的类。我只希望一旦我在屏幕上看到它,其余的就会“自动”工作。我在布局中有键盘,但输入字段必须是全屏的。键盘必须以某种方式弹出......
    • 嵌入视图的问题在于它的行为不像键盘服务。没有可用的排序输入模式(平移或调整大小),并且视图在同一个窗口中(不适合带有填充窗口背景的对话框)
    【解决方案2】:

    我目前正在重新设计我的方法,并尝试在没有 InputMethodService 的情况下工作。我保留示例代码作为处理用户输入的参考。基本上它应该只是一个在需要时弹出的简单视图。

    经过进一步研究,我发现了一个关于App-specific soft-keyboard 的非常有用的问题。如果你遇到我的情况,看看那里。

    【讨论】:

      猜你喜欢
      • 2011-05-24
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多