ActionBarCompat&透明度

时间:2013-08-22 03:12:51

标签: android android-actionbar-compat

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

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

这就是:

Actionbar

背景drawable的代码:

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

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

2 个答案:

答案 0 :(得分:22)

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

  • 创建一个可绘制的背景,如我的问题所示。
  • 像这样创建一个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方法对ActionBar overlay使用Window功能(忽略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);}
    

答案 1 :(得分:6)

ChristianGuerrero回答很棒,但您应该直接提出这个项目:

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

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