美文网首页
遍历Activity中的控件

遍历Activity中的控件

作者: 水月心刀 | 来源:发表于2016-11-05 09:57 被阅读1104次

要实现遍历Activity中的控件,可以通过获取Activity的contentView,然后采用getChildCount()和getChildAt()来进行逐个遍历。

遍历Activity中的所有控件,统计数目

  1. 首先获取Activity的contentView
//注意这个vGroup并不是activity.xml中定义的根布局, mRootView才是。
ViewGroup vGroup = (ViewGroup) getWindow().getDecorView().findViewById(android.R.id.content);
ViewGroup mRootView = (ViewGroup)vGroup.getChildAt(0);
  1. 遍历子控件,如果是布局控件则采用递归的方法,继续遍历其子控件。
    private int count = 0;  //用于统计所有控件的数量,包括不可见的控件
    //rootView 传入第一步中获取到的mRootView,即可统计整个Activity的控件数
    private void traversalView(ViewGroup rootView) {
        Log.d("Traversal","start rootView:"+rootView);
        for(int i = 0; i<rootView.getChildCount(); i++)
        {
            View childVg = rootView.getChildAt(i);
            if(childVg instanceof ViewGroup)
                traversalView((ViewGroup) childVg);
            else
                count++;
        }
        count++; //统计本布局控件
        Log.d("Traversal","end rootView:" + rootView+" count:"+count);
    }

遍历Activity中的所有特定类型的控件

  • 假设我们需要遍历整个Activity中所有的Button控件,可以对上述第二步的代码稍作改动,更改后代码如下:
    private int btnCount = 0;//用于统计所有Button控件的数量,包括不可见的控件
    //rootView 传入第一步中获取到的mRootView
    private void traversalView(ViewGroup rootView) {
        Log.d("Traversal","start rootView:"+rootView);
        for(int i = 0; i<rootView.getChildCount(); i++)
        {
            View childVg = rootView.getChildAt(i);
            if(childVg instanceof ViewGroup)
                traversalView((ViewGroup) childVg);
            else if(childVg instanceof Button)
                btnCount++;
        }
        Log.d("Traversal","end rootView:" + rootView+" btnCount:"+btnCount);
    }
  • 当然我们也可以不仅仅只做统计数量操作,也可以遍历设置所有的按钮的属性:
    private int btnCount = 0;//用于统计所有控件的数量,包括不可见的控件
    //rootView 传入第一步中获取到的mRootView
    private void traversalView(ViewGroup rootView) {
        for(int i = 0; i<rootView.getChildCount(); i++)
        {
            View childVg = rootView.getChildAt(i);
            if(childVg instanceof ViewGroup)
                traversalView((ViewGroup) childVg);
            else if(childVg instanceof Button)
                ((Button)childVg).setClickable(false);//设置所有按钮均不响应点击事件
        }
    }

相关文章

  • 遍历Activity中的控件

    要实现遍历Activity中的控件,可以通过获取Activity的contentView,然后采用getChild...

  • MG--Swift3.x进阶语法学习1

    for循环的高级遍历一、遍历子控件而且指定是UILabel的控件才打印遍历子控件而且指定是UILabel的控件才打...

  • 遍历所有子控件

    遍历一个控件中的所有子控件,可以使用递归的思想 使用

  • Android触摸事件

    布局原理介绍 Android中四大组件中Activity组件就是呈现的许多页面,其中Activity中嵌套很多控件...

  • Android WebView

    使用流程 方式一 在Activity布局文件中添加控件 在代码中获取控件实例,调用loadUrl...

  • 在任意界面退出当前activity,比如侧滑菜单。

    主要就是获取当前activity,然后在自定义的application中把所有activity添加到集合,然后遍历...

  • Activity介绍

    什么是Activity activity是用户和应用程序交互的窗口,一个activity相当于实际中的一个网页 控件

  • Android动画2

    在Activity切换时,我们可以添加控件动画。首先是动画启动方法,代码如下: 在进入的Activity中OnCr...

  • 利用WebView加载手机端网页实现APP封装

    **思路 : **安卓端只使用一个Activity此Activity中只包含WebView这个控件并且隐藏此Act...

  • CheckBox复选框

    CheckBox复选框 在Activity中初始化checkBox控件,通过setCheckedCHangeLis...

网友评论

      本文标题:遍历Activity中的控件

      本文链接:https://www.haomeiwen.com/subject/enowuttx.html