获取所有屏幕UI元素的列表

时间:2016-06-28 16:42:51

标签: android

可以获取所有当前显示的/屏幕上的Android UI元素的列表吗?

例如,如果我有一个看起来像这样的应用程序:

EZ android app

我会得到一个包含以下内容的列表:

  • TextView(Hello World!)
  • RelativeLayout(或无论父容器是什么)
  • 等等,如果有更多元素

如果我不知道ID,或者甚至会在屏幕上显示哪些UI元素,这将是很棒的,但我仍然想要隐藏/显示它们。

1 个答案:

答案 0 :(得分:0)

您可以使用以下经理实现这一点,干净整洁!

在任何地方使用它,您将获得该视图及其所有子视图的列表。

(需要递归完成)

  

的LayoutManager getViews (getWindow());

public class LayoutManager
{
    private static List<View> views;

    public static List<View> getViews(Window window) {
        return getViews(window.getDecorView().getRootView(), true);
    }

    public static List<View> getViews(final View view, boolean starting)
    {
        if (starting) {
            views = new ArrayList<>();
        }

        views.add(view);

        /** Search in each ViewGroup children as well */
        if (view instanceof ViewGroup) {
            ViewGroup viewGroup = (ViewGroup) view;
            for (int i = 0; i < viewGroup.getChildCount(); i++) {
                getViews(viewGroup.getChildAt(i), false);
            }
        }

        return views;
    }
}