使用DDMS转储视图时,为什么View包含Android中的子项

时间:2014-07-10 14:20:23

标签: android ddms

我是android的新手,似乎只有viewgroup可以是某些View的父级,但是当我使用DDMS转储应用程序的视图层次结构时,我发现有一个包含一些子级的View。有人可以向我解释一下吗?请看下面的图片: enter image description here

2 个答案:

答案 0 :(得分:0)

这只是猜测,但我认为任何不属于Android提供的ViewGroup实现的ViewGroup都将显示为View,可能会隐藏其他ViewGroups的名称。所以对于开发者来说,这基本上是隐私的事情

答案 1 :(得分:0)

为了调查这个问题,我创建了一个不执行任何操作的自定义ViewGroup:

private static class MyViewGroup extends ViewGroup {
  public MyViewGroup(Context _context) { super(_context); }

  @Override
  protected void onLayout(boolean _changed, int _l, int _t, int _r, int _b)
  { /* nothing... */ }
}

并将其添加到活动的当前内容视图中:

ViewGroup foo = (ViewGroup)
    this.getWindow().getDecorView().getRootView().findViewById(android.R.id.content);
foo.addView(new MyViewGroup(this));

eclipse的层次结构查看器也将其标记为“视图”。

此外,我查看了另一个带有子项的“视图”的节点详细信息,并且能够看到资源ID。 在我的例子中,它具有值android:id/action_bar_overlay_layout,我可以找到要在android.support.v7.internal.widget.ActionBarOverlayLayout组件的XML布局中使用的resource-id。 它的实现在支持库中,并且真正扩展了Framelayout。

我认为这个问题只是层次结构查看器,只支持标准视图组件的标签。