在我的应用程序中,我想覆盖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
。
谢谢
答案 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)
答案 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>