两个视图都可以在Android中获得焦点吗

Posted

技术标签:

【中文标题】两个视图都可以在Android中获得焦点吗【英文标题】:Can two views both have focus in Android 【发布时间】:2014-12-04 08:30:31 【问题描述】:

我有一个 EditText 和一个 popupWindown(其中有一个 ListView),现在我触摸 EditText,popupWindow 显示。

我需要这样的情况:我可以在 SoftInput 中输入一些东西,我也可以在 ListView 中单击一个子项,它是 PopupWindow 的子项。

现在,我只能输入,或者只能点击 listview ,我不能在 android 4.1、4.2 中同时做这两件事。但我在 Android 4.4、5.0 都可以做到。

我尝试了很多方法,比如popupWindo.setFocus(true),它只会让EditText失去焦点。

那么,android 可以允许两个视图都有焦点吗?

【问题讨论】:

没有两个视图不能同时拥有焦点 【参考方案1】:

不,两个(或更多)视图不能同时获得焦点,这是不可能的。

Here 是如何将焦点从一个 textView 更改为另一个 textView。您可以根据自己的情况进行更改。

【讨论】:

你的解决方案对我不起作用,我需要他们都有重点。我现在正在计划其他一些方法。我认为editText 可能无法与popupWindow 和ListView 一起正常工作,也许我可以将ListView 更改为动态LiearLayou。我正在努力。 视图无法同时获得焦点!你可以把它比作用鼠标同时点击两个按钮。【参考方案2】:

实际上,从技术上讲,两个视图可以同时具有焦点 - 不像您想象的那样(以及您的用例需要):

焦点视图的父级也可以将焦点设置为 true。参照。示例视图层次结构的摘录,has-focus=true 不止一次弹出:

View Hierarchy:
+>DecorViewid=-1, visibility=VISIBLE, width=1920, height=1080, has-focus=true, has-focusable=true, has-window-focus=true, is-clickable=false, 
|
+->LinearLayoutid=-1, visibility=VISIBLE, width=1776, height=1080, has-focus=true, has-focusable=true, has-window-focus=true, is-clickable=fal
|
+-->ViewStubid=16909243, res-name=action_mode_bar_stub, visibility=GONE, width=0, height=0, has-focus=false, has-focusable=false, has-window-f
|
+-->FrameLayoutid=-1, visibility=VISIBLE, width=1776, height=1008, has-focus=true, has-focusable=true, has-window-focus=true, is-clickable=fal
|
+--->FitWindowsLinearLayoutid=2131296268, res-name=action_bar_root, visibility=VISIBLE, width=1776, height=1008, has-focus=true, has-focusable
|
+---->ViewStubCompatid=2131296279, res-name=action_mode_bar_stub, visibility=GONE, width=0, height=0, has-focus=false, has-focusable=false, ha
|
+---->ContentFrameLayoutid=16908290, res-name=content, visibility=VISIBLE, width=1776, height=1008, has-focus=true, has-focusable=true, has-wi
|
+----->LinearLayoutid=-1, visibility=VISIBLE, width=1776, height=1008, has-focus=true, has-focusable=true, has-window-focus=true, is-clickable
|
+------>RecyclerViewid=2131296483, res-name=lstRecordings, visibility=VISIBLE, width=1776, height=873, has-focus=true, has-focusable=true, has

【讨论】:

以上是关于两个视图都可以在Android中获得焦点吗的主要内容,如果未能解决你的问题,请参考以下文章

android EditText在获得焦点的时候下面的Tab被输入法顶上去了?

android开发的textview和imageview有啥区别吗?

Android TV 在 RecyclerViews 之间移动焦点

Android如何判断控件获取焦点啊?

Android音频焦点及混音策略

Android 音频焦点管理