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

我正在使用
Android的标准软键盘输入法编辑器.在按下特定键并且edittext视图具有焦点后,我在我的android模拟器上显示软键盘.我的目的是在屏幕上显示后将焦点设置在软键盘上.我知道软键盘通常用于没有硬键盘的输入,但在我的情况下,我正在开发的应用程序需要此功能,因为它将在自定义设备上运行,并且Android的源代码正在被修改以用于自定义功能.有没有人知道如何解决这个问题?触摸模式是否可能无法在键盘上设置焦点?

编辑:澄清

抱歉暧昧.基本上我在以下情况下需要软键盘中的以下功能.

>用户在EditText上放置光标(使用键盘).因为他使用的是键盘,所以应用程序不会显示软键盘.
>用户按下键盘上的SPECIAL键以调出软键盘.
>焦点应该从EditText更改为SOFTKEYBOARD,这意味着用户应该能够使用硬键盘导航并选择软键盘上的键.当然,这意味着应将关键事件添加到标准软键盘中.
>用户选择一个键后,按下Enter键(例如),键字符应出现在edittext上.

现在的问题是,当我调出软键盘时,FOCUS仍然在编辑文本上.我想知道是否可以将焦点放在软键盘上并使用硬键盘移动它.正如我之前告诉过你的那样是自定义功能.也许我正在以错误的方式解决这个问题,一个带键盘视图的简单弹出窗口就足够了.

Lauren我认为你是正确的,因为标准软键盘是作为服务实现的,并且不遵循常规视图的规则.

任何建议表示赞赏.

谢谢

最佳答案 我认为这里有两种“焦点”:

> EditText焦点是必要的,以确保键盘事件只有一个接收器
>键盘焦点,表示键盘可见,按键可以按下.

据我所知,在android中,只有EditText才能获得焦点.键盘在服务中运行并获得触摸事件,感谢特殊的Insets课程.

如果你只需要强制键盘可见性,你应该尝试this question的答案.

编辑

我认为有两种方法可以实现,具体取决于您是希望此键盘特定于某个活动还是随处可用.

>特定活动

据我了解,负责显示键盘视图的inputmethodservice将不允许您实现此目的.

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

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

然后,您应编写自己的行为以突出显示具有焦点的键并相应地移动它.

您的活动还必须记住最后一个专注于向其发送文本或keyCodes的EditText.

>系统范围

如果您需要在系统的任何位置都可以使用此行为,那么您必须提供自己的inputmethodservice.我建议您查看this post以及SDK中的SoftKeyboard sample.

请注意,您还需要创建一个自定义的KeyboardView,如上所述,但无需记住EditText焦点.

点赞