最近在用Viewgroup, 碰到这样的问题:按手机键盘的方向键无法让其子View获得焦点。Viewgroup中的子View是通过inflate动态添加,并且Viewgroup是多屏,类似桌面程序.后来参考了Launcher的代码, 查了Viewgroup重写这么几个函数就可以达到让其子View获得焦点.
1. addFocusables(ArrayList<View>views, int direction, int focusableMode)
将需要获得焦点的View添加到获得焦点视图的列表中。
2. dispatchUnhandledMove 处理方向键在没有任何View可以获得焦点情况。
3. onRequestFocusInDescendants 传递给子View应获得焦点