我有一个带有一堆按钮的LinearLayout。除非选择菜单项,否则此面板始终处于隐藏状态。

显示LinearLayout时,我想检测用户是否单击了面板外的任何地方,以便可以再次隐藏它。有没有办法做到这一点,也许可以检测焦点变化?

我试图将一个OnFocusChangeListener添加到LinearLayout本身(并在其上调用setFocusable(true)),但从未调用过焦点更改侦听器。此外,我必须能够检测LinearLayout或其任何子级是否失去焦点。

最佳答案

尝试这个:

步骤#1:让LinearLayout监视触摸事件,并消耗它们

步骤#2:让LinearLayout下的事物监视触摸事件-如果它得到一个,则表明它不是来自LinearLayout的,因此您可以关闭LinearLayout并使用该事件,然后取消注册用于触摸事件(或者仅在屏幕上显示LinearLayout时注意它们)

步骤#3:没有步骤#3 ...我认为

关于android - 如何检测是否有人在特定的LinearLayout之外单击,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2343609/

10-12 05:14