可以获取所有当前显示的/屏幕上的Android UI元素的列表吗?
例如,如果我有一个看起来像这样的应用程序:
我会得到一个包含以下内容的列表:
如果我不知道ID,或者甚至会在屏幕上显示哪些UI元素,这将是很棒的,但我仍然想要隐藏/显示它们。
答案 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;
}
}