有没有办法让每个视图都在我的活动中? 我有超过200个视图,包括按钮和图像,所以我希望能够通过使用循环
来访问它们例如
之类的东西for (View v : this)
{
//do something with the views
//depending on the types (button, image , etc)
}
答案 0 :(得分:24)
有没有办法让每一个观点都有 在我的活动里面?
获取根View
,将其转换为ViewGroup
,致电getChildCount()
和getChildAt()
,然后根据需要进行递归。
我有200多个观点,包括 按钮和图像,所以我想成为 能够通过循环访问它们
这是一个相当大的Views
。
答案 1 :(得分:4)
具体来说:
private void show_children(View v) {
ViewGroup viewgroup=(ViewGroup)v;
for (int i=0;i<viewgroup.getChildCount();i++) {
View v1=viewgroup.getChildAt(i);
if (v1 instanceof ViewGroup) show_children(v1);
Log.d("APPNAME",v1.toString());
}
}
然后在某处使用该功能:
show_children(getWindow().getDecorView());
显示当前活动中的所有视图。
答案 2 :(得分:1)
尝试查找与活动相关联的所有视图。
给出以下命令。
ViewGroup viewgroup=(ViewGroup)view.getParent();
viewgroup.getchildcount();
遍历循环。
我们将得到结果。
答案 3 :(得分:0)
您可以使用hierarchyviewer,它允许您查看视图层次结构,包括在代码中创建的视图层次结构。它的主要原因是调试这样的事情。最新的Android Studio现在在设备监视器中具有此功能,允许您转储UI以进行调试。
答案 4 :(得分:0)
在Kotlin中递归执行此操作的好方法:
private fun View.getAllViews(): List<View> {
if (this !is ViewGroup || childCount == 0) return listOf(this)
return children
.toList()
.flatMap { it.getAllViews() }
.plus(this as View)
}