11

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

有谁知道删除该背景的方法?

这就是发生的事情:

操作栏

背景可绘制的代码:

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

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

4

2 回答 2

22

好的,我发现解决方案弄乱了 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);}
    
于 2013-08-22T07:28:43.430 回答
6

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

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

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

于 2014-01-19T14:27:33.053 回答