android:layout_height="?attr/actionBarSize" 是什么意思
What is the meaning of android:layout_height="?attr/actionBarSize"
我正在尝试理解标题中的代码行。
我明白 ? 意味着该值将从主题中获取。
但是当它带有前缀attrs时,我知道它是在android系统的某个地方定义的。
我还看到应用程序中选定的主题是 Theme.AppCompat.NoActionBar 的 child,它没有确定 actionBarSize[=23 的值=]:
<style name="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<declare-stylable name="Theme">
<attr name="actionBarSize" format="dimension" >
<enum name="wrap_content" value="0" />
</attr>
我还在一些 GitHub 资源中找到了一个主题(名称为 Theme),它确实为 actionBarSize 赋予了价值,但这个主题似乎并不是新 android api 的任何 parent 链中的 parent:
Theme.xml
如您所见,.NoActionBar
提供的仅有的两个属性是:
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
其余属性继承自该样式的父项。在 .NoActionBar
的父样式链中是 Base.V21.Theme.AppCompat.Light
,它设置 actionBarSize
:
<item name="actionBarSize">?android:attr/actionBarSize</item>
在这种情况下,?android:
前缀表示它直接来自 Android 平台,将其设置为 56dp
。
如果您查看您的风格的快速文档,您可以看到所有这些:
除此之外,android:layout_height="?attr/actionBarSize"
的意思是 视图应该与操作栏的高度相同。最终值变成 56dp
并不重要;关键是,无论实际值是多少,这个视图都会那么高。
我正在尝试理解标题中的代码行。 我明白 ? 意味着该值将从主题中获取。 但是当它带有前缀attrs时,我知道它是在android系统的某个地方定义的。 我还看到应用程序中选定的主题是 Theme.AppCompat.NoActionBar 的 child,它没有确定 actionBarSize[=23 的值=]:
<style name="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<declare-stylable name="Theme">
<attr name="actionBarSize" format="dimension" >
<enum name="wrap_content" value="0" />
</attr>
我还在一些 GitHub 资源中找到了一个主题(名称为 Theme),它确实为 actionBarSize 赋予了价值,但这个主题似乎并不是新 android api 的任何 parent 链中的 parent: Theme.xml
如您所见,.NoActionBar
提供的仅有的两个属性是:
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
其余属性继承自该样式的父项。在 .NoActionBar
的父样式链中是 Base.V21.Theme.AppCompat.Light
,它设置 actionBarSize
:
<item name="actionBarSize">?android:attr/actionBarSize</item>
在这种情况下,?android:
前缀表示它直接来自 Android 平台,将其设置为 56dp
。
如果您查看您的风格的快速文档,您可以看到所有这些:
除此之外,android:layout_height="?attr/actionBarSize"
的意思是 视图应该与操作栏的高度相同。最终值变成 56dp
并不重要;关键是,无论实际值是多少,这个视图都会那么高。