首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在android中设置输入方法编辑器/软键盘的显式焦点

在android中设置输入方法编辑器/软键盘的显式焦点
EN

Stack Overflow用户
提问于 2011-09-16 12:04:47
回答 1查看 1.5K关注 0票数 4

我正在使用Android的标准软键盘输入法编辑器。我是在我的android模拟器上显示软键盘后,按下一个特定的键和一个编辑文本视图有焦点。我的目的是在软键盘出现在屏幕上后,将焦点放在软键盘上。我知道软键盘通常用于没有硬键盘的输入,但在我的例子中,我正在开发的应用程序需要这种功能,因为它将在定制设备上运行,而android的源代码正在被修改以实现自定义功能。有谁知道如何解决这个问题吗?触摸模式是否可能不允许在键盘上设置焦点?

编辑:澄清

抱歉我有点模棱两可。基本上,在下面的情况下,我需要软键盘提供以下功能。

  1. 用户将光标(使用键盘)放置在EditText上。因为他使用的是键盘,所以应用程序不会显示软键盘。
  2. 用户按下键盘上的一个特殊键来打开软键盘。
  3. 焦点应该将EditText更改为SOFTKEYBOARD,这意味着用户应该能够使用硬键盘导航和选择软键盘上的键。当然,这意味着关键事件应该添加到标准软键盘中。
  4. 用户选择一个键后,他按回车(例如),键字符应该出现在编辑文本上。

现在的问题是,当我提到软键盘时,焦点仍然是编辑文本。我想知道是否有可能把焦点放在软键盘上,然后用硬键盘继续前进。正如我之前告诉过您的,这是自定义功能。也许我是以错误的方式处理这个问题,一个简单的弹出窗口和键盘视图就足够了。

劳伦,我认为你是对的,在某种意义上,标准软键盘是作为一种服务实现的,而不遵循常规视图的规则。

如有任何建议,敬请见谅。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-16 13:26:14

我认为这里有两种“焦点”:

  • EditText焦点对于确保键盘事件只有一个接收器是必要的。
  • 键盘焦点,意味着键盘是可见的,可以按下键。

据我所知,在安卓系统中,只有EditText才是焦点。键盘在服务中运行,并获得触摸事件,感谢一个特殊的嵌体类。

如果您所需要的只是强制您的键盘可见性,您应该尝试从这个问题的答案。

编辑

我认为有两种方法可以做到这一点,这取决于您是否希望这个键盘是特定于某个活动或在任何地方都可用。

  • 活性特异性

据我理解,负责显示keyboardview的inputmethodservice服务将不允许您实现这一点。

我的最佳建议是创建一个具有“可聚焦键”功能的专用键盘视图(扩展键盘视图将是一个很好的起点)。

您可以更改键盘可见性(使用View.VISIBLE和View.GONE)以使其出现和消失。

然后,您应该编写自己的行为代码,用焦点突出显示键,并相应地移动它。

您的活动还必须记住最后一个有焦点的EditText向其发送文本或keyCodes。

  • 系统宽

如果您需要这种行为在系统的任何地方都可用,那么您必须提供您自己的输入方法服务。我建议您看看这个职位以及SDK中的SoftKeyboard样品

请注意,您还需要像上面描述的那样创建一个自定义KeyboardView,但不需要记住EditText焦点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7444398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档