当我在这里设置样式时:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
</style>

动作条就会消失。
但是,当我将它设置为:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowActionBar">false</item>
        <item name=“android:windowNoTitle">true</item>
</style>

动作条还在这里。
有什么区别?

最佳答案

windowActionBar是appcompat库中提供的属性,其中asandroid:windowActionBar在material theme中提供。
当您设置以下代码时,操作栏将消失,这仅仅是因为您正在使用appcompat库并引用该库本身提供的属性:

<item name="windowActionBar">false</item>

在另一点上,它与colorPrimaryandroid:colorPrimary属性以及所有其他类似属性相同。
例如:
我们使用材料主题,并将android:colorPrimary属性引用如下:
<style name="AppTheme" parent="android:Theme.Material.Light">
        <item name="android:colorPrimary">@color/primary</item>
        <item name="android:colorPrimaryDark">@color/primary_dark</item>
        ....
        ....
</style>

但我们现在使用的appcompat库只有colorPrimary属性,以提供与较低版本的兼容性。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>

        ...
        ...

</style>

08-26 04:42