具有子视图的ViewGroup的焦点行为是什么?

时间:2017-08-08 12:00:48

标签: android focus onfocuschangelistener

当子视图获得焦点时,我希望View和它的父ViewGroup都收到onFocusChange(...)事件。

<LinearLayout
    ...
    android:focusable="true"
    android:descendantFocusability="beforeDescendants">

    <TextView
        ...
        android:focusable="true"/>

    <TextView
        ...
        android:focusable="true"/>

</LinearLayout>

然而,让儿童专注于焦点会阻止父母获得焦点。父母的属性似乎被忽略了。

是否有关于可聚焦视图的复合行为的文档?

除了视图之外,我如何才能获得父级的焦点事件?

2 个答案:

答案 0 :(得分:0)

不确定这是否是您所寻找的,但我不认为您可以有多重点。重点的定义是关注一件事。请阅读此处。

Can two views both have focus in Android

Focus issue with multiple EditTexts

答案 1 :(得分:0)

由于Android一次只是一个屏幕,因此我们对桌面应用程序所知道的聚焦概念略有不同。您没有关注一个窗口并从另一个窗口获取焦点(还有其他生命周期事件)如果父级会收到其子级的焦点事件,那么所有层级父级也应该接收它,如您所理解的那样无用。聚焦正在一次一个视图上进行。

要实现您的目标,您可以在OnFocusChangeListener中将事件转发给视图的父级,但是存在可能导致意外行为的风险