Enumerate/Iterate all Views in Activity?

后端 未结 8 571
忘了有多久
忘了有多久 2020-12-09 17:33

Is there a way to iterate through all the views in your Activity? Something like:

Iterator it = getViewIterator();
...

Does this exi

8条回答
  •  一向
    一向 (楼主)
    2020-12-09 17:57

    Rx java solution

        public static Observable iterate(@NonNull View root) {
            return Observable.create(emitter -> {
                iterate(root, emitter);
                emitter.onComplete();
            });
        }
    
        private static void iterate(@NonNull View view, @NonNull ObservableEmitter emitter) {
            emitter.onNext(view);
            if (view instanceof ViewGroup) {
                ViewGroup viewGroup = (ViewGroup) view;
                for (int i = 0; i < viewGroup.getChildCount(); i++) {
                    iterate(viewGroup.getChildAt(i), emitter);
                }
            }
        }
    

提交回复
热议问题