【问题标题】:Add Activity's background image in ActionBar在 ActionBar 中添加 Activity 的背景图片
【发布时间】:2014-04-16 17:58:23
【问题描述】:

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

我还在我的 Activity 中使用背景图片。

问题是 ActionBar 没有将背景图像作为它的一部分。那就是图像在操作栏下方开始。 (你可以在下面的截图中看到)

ActionBar 的背景颜色好像是白色的,上面渲染了半透明的颜色。

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

此视图的高度与操作栏的高度相同。为此,我在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 中,并且不要打扰我的 view_below_actionbar 和navigation drawer。

谢谢

【问题讨论】:

  • 我的回答对你有帮助吗?

标签: android android-actionbar


【解决方案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>

【讨论】:

    【解决方案2】:

    看看这个library -> GlassActionBar

    您可以从Play Store下载该库的示例

    它完全满足您的需求。

    【讨论】:

      【解决方案3】:

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

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

      <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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-10
        • 1970-01-01
        • 2014-11-07
        • 1970-01-01
        • 2011-04-24
        相关资源
        最近更新 更多