遍历 Android 视图的所有子视图?

新手上路,请多包涵

我正在为 Android 开发游戏。为了帮助实现它,我的想法是创建一个视图的子类。然后我会插入这个类的几个实例作为主视图的子视图。每个实例都会在按下时处理检测(通过 OnTouchListener)。

我现在遇到的问题是如何遍历所有这些子视图以便读取它们的状态并处理它们? (即当他们都达到某种状态时,应该发生一些事情)。

或者有没有更好的方法让屏幕上的多个对象响应触摸并且我可以检查它们的状态?

原文由 Slapout 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 566
2 个回答

@jqpubliq 是对的,但如果你真的想遍历所有视图,你可以简单地使用 getChildCount()getChildAt() 来自 ViewGroup 56d0a9 的方法一个简单的递归方法将完成剩下的工作。

原文由 Romain Guy 发布,翻译遵循 CC BY-SA 3.0 许可协议

我做了一个递归函数的小例子:

 public void recursiveLoopChildren(ViewGroup parent) {
        for (int i = 0; i < parent.getChildCount(); i++) {
            final View child = parent.getChildAt(i);
            if (child instanceof ViewGroup) {
                recursiveLoopChildren((ViewGroup) child);
                // DO SOMETHING WITH VIEWGROUP, AFTER CHILDREN HAS BEEN LOOPED
            } else {
                if (child != null) {
                    // DO SOMETHING WITH VIEW
                }
            }
        }
    }

该函数将开始遍历 ViewGroup 中的所有视图元素(从第一项到最后一项),如果子项是 ViewGroup 然后用该子项重新启动函数以检索所有嵌套视图在那个孩子里面。

原文由 Tobrun 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题