【问题标题】:Transparent Overlay ActionBar with AppCompat?带有 AppCompat 的透明覆盖 ActionBar?
【发布时间】:2015-08-31 08:26:26
【问题描述】:

我想要一个具有以下属性的 ActionBar:

  1. 覆盖栏,这样布局的父视图将伸展到整个窗口。
  2. ActionBar 的白色标题颜色。
  3. 透明背景。

我的目标是 API 14+,使用 AppCompat-v7:22.2.1。所以我准备我的风格是这样的:

<style name="Theme.MyTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/Theme.MyTheme.MyActionBar</item>
    <item name="actionBarStyle">@style/Theme.MyTheme.MyActionBar</item>

    <item name="colorPrimary">#5af142</item>
    <item name="colorPrimaryDark">#06dd09</item>
    <item name="colorAccent">#20f304</item>
</style>

<style name="Theme.MyTheme.MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
    <item name="android:background">@android:color/transparent</item>
    <item name="background">@android:color/transparent</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="windowActionBarOverlay">true</item>
    <item name="android:textColor">@android:color/white</item>
</style>

并且,在 Manifest 中,我将 Theme.MyTheme 设置为我的活动主题。

1 & 2 有效,3 无效。它接缝我得到一个灰色的背景,我不知道我应该改变/添加什么。

【问题讨论】:

标签: android android-actionbar android-appcompat


【解决方案1】:

试试下面的代码,这是我的styles.xml

<resources>

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!--<item name="android:windowActionBarOverlay">true</item>

    <item name="windowActionBarOverlay">true</item>-->
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:actionBarStyle">@style/MyActionBar</item>

    <!-- Support library compatibility -->
    <item name="windowActionBarOverlay">true</item>
    <item name="actionBarStyle">@style/MyActionBar</item>

    <item name="android:windowContentOverlay">@null</item>
</style>

<!-- ActionBar styles -->
<style name="MyActionBar"
    parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/transparent</item>
    <item name="android:titleTextStyle">@style/Theme.YourTheme.Styled.ActionBar.TitleTextStyle</item>
    <!-- Support library compatibility -->
    <item name="background">@color/transparent</item>
    <item name="titleTextStyle">@style/Theme.YourTheme.Styled.ActionBar.TitleTextStyle</item>

</style>


<style name="Theme.YourTheme.Styled.ActionBar.TitleTextStyle" parent="@android:style/Widget.TextView">
    <item name="android:textSize">13sp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">@android:color/white</item>

    <item name="textSize">13sp</item>
    <item name="textStyle">bold</item>
    <item name="textColor">@android:color/white</item>
</style>


</resources>

【讨论】:

  • 会试试这个并回复你。
  • 完美运行。谢谢!只是一个小问题:我注意到 TitleTextStyle 不包括支持库兼容性属性。我可以假设这在 API 14+ 中的行为相同吗?
  • 其实我错过了那部分,你可以添加那些兼容性。
  • 没有android:前缀的属性名基本相同吧?
  • 非常感谢!仅供参考,@color/transparent 在样式中无法识别,所以我使用了@android:color/transparent
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
  • 2014-12-14
  • 2013-03-25
  • 1970-01-01
相关资源
最近更新 更多