Android Layout Inspector 中的灰色视图是啥意思?
Posted
技术标签:
【中文标题】Android Layout Inspector 中的灰色视图是啥意思?【英文标题】: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_container
、https://gitlab.com/gitlab-org/gitter/gitter-android-app/issues/108 中
如果您想自己查看代码,该项目是开源的,https://gitlab.com/gitlab-org/gitter/gitter-android-app
【问题讨论】:
【参考方案1】:在拍摄 LayoutInspector 快照时不会呈现灰显的 View
s,因为它们不需要显示。
例子:
您代码中的NavigationView
目前处于隐藏状态(您可以通过打开它并使用 LayoutInspector 拍摄另一个快照来测试我是否正确)
NavigationView
中的 RecyclerView
是灰色的,只要它没有分配给它的适配器(也可能是空的 - 没有测试它)
有时View
s 不适合屏幕,例如当您忘记将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/… ...只是不确定是哪一个。
供参考,在app/src/main/res/layout/activity_main.xml
和关联的app/src/main/java/im/gitter/gitter/activities/MainActivity.java
中
什么是布局样板?为什么其他FrameLayout
、ContentFrameLayout
、LinearLayout
不是灰色的?
@MLM ContentFrameLayout
是 id 为 android.R.id.content
的根视图,它的 R.layout.activity_main
已膨胀,并在其中添加了更多嵌套节点。它源自自定义 xml。查看MainActivity.java
时,没有NavigationView
标头被膨胀;如果您要在其中添加一个自定义标题,它不应该再变灰(只是为了证明我所说的)。也更新了答案......命名空间的东西似乎是最好的解释 - 因为它是框架与应用程序资源之间的区别。以上是关于Android Layout Inspector 中的灰色视图是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android Studio 中使用旧版 Layout Inspector
Layout Inspector - 如何查找文本元素的当前字体