Java 遍历视图组
如果安卓系统有一个新的屏幕,我想遍历所有的视图组和视图,以发现所有的按钮、文本字段、微调器等。。。这可能吗?我得到了视图计数,然后将其用作Java 遍历视图组,java,android,Java,Android,如果安卓系统有一个新的屏幕,我想遍历所有的视图组和视图,以发现所有的按钮、文本字段、微调器等。。。这可能吗?我得到了视图计数,然后将其用作 counter to call getChildAt(int index)这个问题可能已经回答很久了,但我编写这个递归函数是为了为我在布局中找到的任何按钮设置onClickListeners,但它可以重新调整用途: private void recurseViews(ViewGroup v) { View a; boolean isgrp =
counter to call getChildAt(int index)这个问题可能已经回答很久了,但我编写这个递归函数是为了为我在布局中找到的任何按钮设置onClickListeners,但它可以重新调整用途:
private void recurseViews(ViewGroup v) {
View a;
boolean isgrp = false;
for(int i = 0; i < v.getChildCount(); i++) { //attach listener to all buttons
a = v.getChildAt(i);
if(a instanceof ViewGroup) setcl((ViewGroup) a);
else if(a != null) {
//do stuff with View a
}
}
return;
}
private void recurseViews(视图组v){
视图a;
布尔值isgrp=false;
对于(inti=0;i
编辑:将视图强制转换为ViewGroup不会像我之前所想的那样引发异常,因此代码现在要短得多您可以使用它获取父布局中的所有子视图,返回视图的数组列表
public List<View> getAllViews(ViewGroup layout){
List<View> views = new ArrayList<>();
for(int i =0; i< layout.getChildCount(); i++){
views.add(layout.getChildAt(i));
}
return views;
}
公共列表GetAllView(视图组布局){
列表视图=新建ArrayList();
对于(int i=0;i
如果您想获得特定视图,可以使用此示例。它将所有文本视图都包含在一个布局中
public List<TextView> getAllTextViews(ViewGroup layout){
List<TextView> views = new ArrayList<>();
for(int i =0; i< layout.getChildCount(); i++){
View v =layout.getChildAt(i);
if(v instanceof TextView){
views.add((TextView)v);
}
}
return views;
}
公共列表GetAllTextView(视图组布局){
列表视图=新建ArrayList();
对于(int i=0;i
只要您试图获取的对象来自View类,它就可以工作。检查Romain Guy的回答: