题目:给最外层的rootview,把这个根视图下的全部button背景设置成红色,手写代码,不许用递归

来源:互联网 发布:手机超市软件 编辑:程序博客网 时间:2024/06/05 17:02

题目:给最外层的rootview,把这个根视图下的全部button背景设置成红色,手写代码,不许用递归

算法原理:

  1. Android的view视图是按树形结构分布,所以按树形结构遍历
  2. 循环判断每一层的ViewGroup元素,将其入栈;否则判断当前view是否是Button类实例,是则改写背景色
  3. 当前ViewGroup检查childView完成后,判断栈是否非空,取出栈顶元素ViewGroup重复步骤2直至栈为空。
void changeAllBtnBGColor(View view, int color) {        if (view == null || !(view instanceof ViewGroup))            return;        Stack<View> m = new Stack<>();        while (view != null) {            ViewGroup tmpGroup = (ViewGroup) view;            int count = tmpGroup.getChildCount();            for (int i = 0; i < count; i++) {                View child = tmpGroup.getChildAt(i);                if (child instanceof ViewGroup)                    m.add(child);                else if (child instanceof Button) {                    child.setBackgroundColor(color);                }            }            if (m.isEmpty())                break;            else view = m.pop();        }    }
2 0
原创粉丝点击