Android 获取屏幕上所有UI元素的列表
是否可以获取当前显示/屏幕上所有android UI元素的列表 例如,如果我有这样一个应用程序: 我将得到一份包含以下内容的列表:Android 获取屏幕上所有UI元素的列表,android,Android,是否可以获取当前显示/屏幕上所有android UI元素的列表 例如,如果我有这样一个应用程序: 我将得到一份包含以下内容的列表: TextView(你好,世界!) RelativeLayout(或任何父容器) 等等,如果有更多的元素 如果我不知道ID,甚至不知道屏幕上会出现什么UI元素,但我仍然想隐藏/显示它们,那就太好了。您可以使用下面的管理器来实现这一点,既漂亮又干净! 您可以在任何地方使用它,您将获得视图及其所有子视图的列表 (需要递归完成) getView(getWindow(
- TextView(你好,世界!)
- RelativeLayout(或任何父容器)
- 等等,如果有更多的元素
getView(getWindow())
公共类布局管理器
{
私有静态列表视图;
公共静态列表GetView(窗口){
返回GetView(window.getDecorView().getRootView(),true);
}
公共静态列表GetView(最终视图视图,布尔启动)
{
如果(启动){
视图=新的ArrayList();
}
视图。添加(视图);
/**在每个视图组中也搜索子视图*/
if(视图组的视图实例){
ViewGroup ViewGroup=(ViewGroup)视图;
对于(int i=0;i
您可以通过使用下面的管理器来实现这一点,既漂亮又干净!
您可以在任何地方使用它,您将获得视图及其所有子视图的列表
(需要递归完成)
getView(getWindow())
公共类布局管理器
{
私有静态列表视图;
公共静态列表GetView(窗口){
返回GetView(window.getDecorView().getRootView(),true);
}
公共静态列表GetView(最终视图视图,布尔启动)
{
如果(启动){
视图=新的ArrayList();
}
视图。添加(视图);
/**在每个视图组中也搜索子视图*/
if(视图组的视图实例){
ViewGroup ViewGroup=(ViewGroup)视图;
对于(int i=0;i
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;
}
}