【问题标题】:What does a greyed out view in the Android Layout Inspector mean?Android Layout Inspector 中的灰色视图是什么意思?
【发布时间】:2019-05-13 22:20:57
【问题描述】:

在 Android Studio 中,Tools -> Layout Inspector,View Tree 中的灰色(柔和、暗淡)视图是什么意思?该层仍然具有VISIBLE 属性

我在文档https://developer.android.com/studio/debug/layout-inspector 中没有看到任何解释,并且悬停视图时没有工具提示。

你可以download the .li layout capture in question here


对于上下文/参考,我试图弄清楚为什么片段没有出现在 id/content_containerhttps://gitlab.com/gitlab-org/gitter/gitter-android-app/issues/108

如果您想自己查看代码,该项目是开源的,https://gitlab.com/gitlab-org/gitter/gitter-android-app

【问题讨论】:

    标签: android android-studio android-layout android-layout-editor


    【解决方案1】:

    在拍摄 LayoutInspector 快照时不会呈现灰显的 Views,因为它们不需要显示。

    例子:

    • 您代码中的 NavigationView 目前处于隐藏状态(您可以通过打开它并使用 LayoutInspector 拍摄另一个快照来测试我是否正确)
    • NavigationView 中的 RecyclerView 是灰色的,只要它没有分配给它的适配器(也可能是空的 - 没有测试它)
    • 有时Views 不适合屏幕,例如当您忘记将LinearLayout 设置为“垂直”时,它的大部分子项都位于屏幕右边缘的右侧

    【讨论】:

      【解决方案2】:

      这些节点是样板布局,对于框架来说是必不可少的。

      ContentFrameLayout 是 ID 为 android.R.id.content 的根视图,

      其中有R.layout.activity_main 膨胀,并在其中添加更多嵌套节点。

      基本上是名称空间android.R(灰色)与im.gitter.gitter.R(黑色)。

      来自android.R 的节点在可见布局膨胀时可能仍会变黑。

      【讨论】:

      • 这种情况下有子元素怎么办? i.imgur.com/aIfIESr.png 我确实在NavigationView 上看到了INVISIBLE?也许它与任何绘图/渲染无关?
      • @MLM 那个子元素也可能是样板,没有自定义视图膨胀;他们需要在那里,因为否则框架会抛出 NPE。我还检查了gitlab.com/gitlab-org/gitter/gitter-android-app/tree/master/app/… ...只是不确定是哪一个。
      • 什么是布局样板?为什么其他FrameLayoutContentFrameLayoutLinearLayout 不是灰色的?
      • @MLM ContentFrameLayout 是 id 为 android.R.id.content 的根视图,它的 R.layout.activity_main 已膨胀,并在其中添加了更多嵌套节点。它源自自定义 xml。查看MainActivity.java 时,没有NavigationView 标头被膨胀;如果您要在其中添加一个自定义标题,它不应该再变灰(只是为了证明我所说的)。也更新了答案......命名空间的东西似乎是最好的解释 - 因为它是框架与应用程序资源之间的区别。
      猜你喜欢
      • 1970-01-01
      • 2013-11-04
      • 2019-11-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 2019-04-01
      • 2011-10-26
      相关资源
      最近更新 更多