我是android新手,现在我正试图找到一种方法来获取控件的数量(我不知道如何在android中调用这些控件,我的意思是我有4个文本视图、2个编辑文本、3个按钮,所以总共有9个“控件”),有没有办法计算它们?

最佳答案

在android中称为视图。是的,连按钮都有。您可以使用getChildCount(),但如果视图中有视图,则必须递归地执行此操作。我要做的是获取基本视图,然后使用以下内容:

public int getViewCount(View view) {
    int viewCount = 1;
    if(view instanceof ViewGroup) {
        viewCount += countChildren((ViewGroup)view);
    }
    return viewCount;
}

public int countChildren(ViewGroup viewGroup) {
    int viewCount = 0;
    for(int i = 0; i < viewGroup.getChildCount(); i++){
        viewCount += getViewCount(viewGroup.getChildAt(i));
    }
    return viewCount;
}

使事情复杂化的是,只有viewgroups可以有子级,但按钮和内容是view的实例,而不是viewgroup的实例。
如果不希望它计算视图组,请尝试以下操作:
public int getViewCount(View view) {
    int viewCount = 1;
    if(view instanceof ViewGroup) {
        viewCount = 0;  // Uncounts for ViewGroups, but still checks them for Views.
        viewCount += countChildren((ViewGroup)view);
    }
    return viewCount;
}

public int countChildren(ViewGroup viewGroup) {
    int viewCount = 0;
    for(int i = 0; i < viewGroup.getChildCount(); i++){
        viewCount += getViewCount(viewGroup.getChildAt(i));
    }
    return viewCount;
}

10-06 16:22