android:layout_height =“?attr / actionBarSize”的含义是什么

问题描述 投票:0回答:1

我试图理解标题中的代码行。我知道表示该值将从主题中获取。但是当它带有前缀attrs时,我知道它是在android系统中定义的。我也看到应用程序中选定的主题是Theme.AppCompat.NoActionBar的子元素,该子元素不确定actionBarSize

的值
<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的任何父链中的父项:Theme.xml

android android-theme android-attributes
1个回答
0
投票

您已经发现,.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

如果您查看样式的快速文档,就可以看到所有这些内容:

enter image description here


除此之外,android:layout_height="?attr/actionBarSize" 均值是视图应与动作栏的高度相同。最终值变成56dp并不重要;关键是,无论实际值是多少,此视图将很高。

© www.soinside.com 2019 - 2024. All rights reserved.