【问题标题】:ActionBarCompat & TransparencyActionBar 兼容性和透明度
【发布时间】:2014-01-19 22:27:33
【问题描述】:

我想让支持库中的 ActionBar 完全透明,但是,由于背景堆栈,似乎更改背景可绘制对象是不够的。如果你放置一个半透明的背景,你最终会得到它背后的默认背景。

有谁知道去除背景的方法吗?

会发生这样的事情:

背景可绘制代码:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#66336688"/>
</shape>

如您所见,drawable 具有与默认灰色背景重叠的透明蓝色。

【问题讨论】:

  • 感谢 Ahmad,您的链接非常有用。我在较新版本的 SDK 上工作,但在 API 级别 11 以下它会崩溃......如果我设法让它工作,我会更新我的答案
  • 对以前的版本使用 Actionbar Sherlock,它提供了向后兼容的 actionbar。
  • @MuhammadAamirALi Sherlock 很快就会被弃用,这对于新项目来说不是一个好主意。

标签: android android-actionbar-compat


【解决方案1】:

好的,我发现解决方案搞乱了 SDK。 看起来很简单,你需要做3件事:

  • 创建一个可绘制的背景,如我的问题所示。
  • 像这样创建一个 ActionBar 样式:

    <!-- Application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
    
        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>
    
    <!-- ACTION BAR STYLES -->
    <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="android:background">@drawable/actionbar_background</item>
        <item name="android:windowActionBarOverlay">true</item>
    
        <!-- Support library compatibility -->
        <item name="background">@drawable/actionbar_background</item>
        <item name="windowActionBarOverlay">true</item>
    </style>
    
  • 使用 Support 方法将 Window 功能用于 ActionBar 覆盖(忽略 Eclipse 关于常量 API 级别的警告;我使用 SuppressLint 注释来删除警告):

    @SuppressLint("InlinedApi") @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
    setContentView(R.layout.activity_home);}
    

【讨论】:

  • supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 为我工作。谢谢
  • 没有您的评论@zackygaurav,代码无法运行,谢谢
【解决方案2】:

ChristianGuerrero 的回答很好,但你应该直接把项目:

<item name="android:windowActionBarOverlay">true</item>

在 AppTheme 样式中。然后您不必在 onCreate 方法中添加任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    相关资源
    最近更新 更多