我正在使用Android的标准软键盘输入法编辑器。在按下特定键并且edittext视图具有焦点后,我在我的android模拟器上显示软键盘。我的目的是在屏幕上显示后将焦点设置在软键盘上。我知道软键盘通常用于没有硬键盘的输入,但在我的情况下,我正在开发的应用程序需要此功能,因为它将在自定义设备上运行,并且Android的源代码正在被修改以用于自定义功能。有没有人知道如何解决这个问题?触摸模式是否可能无法在键盘上设置焦点?
编辑:澄清
抱歉模棱两可。基本上我在以下情况下需要软键盘中的以下功能。
现在的问题是,当我调出软键盘时,FOCUS仍然在编辑文本上。我想知道是否可以将焦点放在软键盘上并使用硬键盘移动它。正如我之前告诉过你的那样是自定义功能。也许我正在以错误的方式处理这个问题,一个带键盘视图的简单弹出窗口就足够了。
Lauren我认为你是正确的,因为标准软键盘是作为服务实现的,并且不遵循常规视图的规则。
感谢任何建议。
谢谢
答案 0 :(得分:2)
我认为这里有两种“焦点”:
据我所知,在android中,只有EditText才能获得焦点。键盘在服务中运行并获得触摸事件,感谢特殊的Insets类。
如果你只需要强制键盘可见性,你应该尝试this question的答案。
修改强>
我认为有两种方法可以执行此操作,具体取决于您是希望此键盘特定于某个活动还是随处可用。
据我了解,负责显示键盘视图的inputmethodservice将不允许您实现此目的。
我最好的建议是你创建一个具有这种“可聚焦键”功能的专用键盘视图(扩展键盘视图将是一个很好的起点)。
您可以更改键盘可见性(使用View.VISIBLE和View.GONE)使其显示和消失。
然后,您应该编写自己的行为以突出显示具有焦点的键并相应地移动它。
您的活动还必须记住最后一个专注于向其发送文本或keyCodes的EditText。
如果您需要在系统的任何位置都可以使用此行为,那么您必须提供自己的inputmethodservice。我建议您查看this post以及SDK中的SoftKeyboard sample。
请注意,您还需要创建一个自定义的KeyboardView,如上所述,但无需记住EditText焦点。