在ActionBar中添加Activity的背景图片

时间:2014-04-16 17:58:23

标签: android android-actionbar

在我的应用程序中,我想覆盖ActionBar的颜色并使其半透明。 (颜色十六进制#40000000)

我也在我的活动中使用背景图片。

问题是ActionBar没有将背景图像作为其一部分。那就是图像从动作栏下方开始。 (如下面的屏幕截图所示)

似乎ActionBar的bacground颜色为白色,半透明颜色呈现在它上面。

另一个问题是,我还在动作栏下方显示了一个视图。 (见下图)

此视图的高度与操作栏的高度相同。我正在onCreate()

中使用下面的代码
private void setTopPanelHeight() {
    // Calculating ActionBar height
    TypedValue tv = new TypedValue();
    if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
        // Height in pixels.
        Integer actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, getResources().getDisplayMetrics());
        // Changing panel height.
        View panelView = findViewById(R.id.view_panel_below_action_bar);
        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) panelView.getLayoutParams();
        params.height = (int) actionBarHeight;
        panelView.setLayoutParams(params);
    }
}

<<

正如许多answers&在android docs中,我尝试使用:

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

然后按建议here

增加我的布局上边距
`android:layout_marginTop="?android:attr/actionBarSize"`

但是,没用。

如何将我的背景图片包含在ActionBar&amp;也不要打扰我的view_below_actionbar&amp; navigation drawer

谢谢

enter image description here

3 个答案:

答案 0 :(得分:1)

windowActionBarOverlay应该有用。

如果您使用的是android支持库,那么您需要这样做

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

以下是自定义样式示例...

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="windowActionBarOverlay">true</item>
</style>

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">#40000000</item>
</style>

答案 1 :(得分:0)

看看这个library - &gt; GlassActionBar

您可以从Play Store

下载该库的示例

它完全符合您的需要。

答案 2 :(得分:0)

就我而言,这已经奏效了。

这将覆盖您的主要活动内容

<style name="AppTheme.ActionBar.Translucent" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowContentOverlay">@null</item>
    <item name="actionBarStyle">@style/MyActionBar</item>
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="windowActionBarOverlay">true</item>
</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="background">@color/colorPrimaryTranslucent</item>
    <item name="backgroundStacked">@color/colorPrimaryTranslucent</item>
    <item name="backgroundSplit">@color/colorPrimaryTranslucent</item>
</style>

但是如果你想要ActionBar半透明但不要覆盖你的内容,你的背景图片应该是半透明的ActionBar,请按以下步骤操作。

<style name="AppTheme.ActionBar.Transparent" parent="AppTheme">
    <item name="android:windowContentOverlay">@null</item>
    <item name="actionBarStyle">@style/MyActionBar</item>
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:windowActionBarOverlay">false</item>
    <item name="windowActionBarOverlay">false</item>
    <item name="android:windowBackground">@drawable/background_image</item>
</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="background">@color/colorPrimaryTranslucent</item>
    <item name="backgroundStacked">@color/colorPrimaryTranslucent</item>
    <item name="backgroundSplit">@color/colorPrimaryTranslucent</item>
</style>