显示ImageView部分在透明的ActionBar后面

Google Maps应用程序有一个透明的ActionBar,通过它可以看到地图。

在这里输入图像说明

我能够使用这个设置ActionBar的透明度:

<style name="Theme.MyTheme" parent="android:style/Theme.Holo.Light"> <item name="android:actionBarStyle">@style/ActionBar</item> </style> <style name="ActionBar" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:background">#64000000</item> </style> 

但是如何在ActionBar后面显示我的ImageView?

您可以启用ActionBar重叠模式。 要做到这一点,你必须在主题中设置(android:)windowActionBarOverlay项为true

 <style name="MyTheme" parent="Theme.Sherlock"> ... <item name="windowActionBarOverlay">true</item> <!-- for ActionBarSherlock --> <item name="android:windowActionBarOverlay">true</item> </style> 

你也可以在运行时设置它:

 requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 

这将是ActionBar一个半透明的浮动栏。

像任何requestWindowFeature... ,在添加内容之前应该调用它。

setContentView ,您可以使用以下方法从Drawable设置背景:

 getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bg)); 

对于ActionBarSherlock,使用getSupportActionBar更改getActionBar

带有shape元素的actionbar_bg.xml

 <solid android:color="#64000000" /> 

虽然我发现Tomik的解决scheme很好,但对于那些一次性的案件而言,这对于一些活动而不是全盘的风格是有用的。

如果有人需要透明栏,但只有在某些活动中使用透明栏,而在其他栏中使用透明栏时,可能需要创build两种不同的样式,并使用清单来控制它:

 <style name="MyThemeOverlay" parent="Theme.Sherlock"> ... <item name="windowActionBarOverlay">true</item> <!-- for ActionBarSherlock --> <item name="android:windowActionBarOverlay">true</item> <!-- any stuff common here, colours, etc --> <!-- define the style for native ActionBar for Android 4 and higher --> <item name="android:actionBarStyle">@style/myActionbarTransparent</item> <!-- define the style for ActionBarSherlock --> <item name="actionBarStyle">@style/myActionbarTransparent</item> </style> <style name="MyThemeNoOverlay" parent="MyTheme"> <item name="windowActionBarOverlay">false</item> <!-- for ActionBarSherlock --> <item name="android:windowActionBarOverlay">false</item> <!-- any stuff specific for no overlay activity action bars --> <!-- define the style for native ActionBar for Android 4 and higher --> <item name="android:actionBarStyle">@style/myActionbar</item> <!-- define the style for ActionBarSherlock --> <item name="actionBarStyle">@style/myActionbar</item> </style> <style name="myActionbar" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:background">@color/white</item> </style> <style name="myActionbarTransparent" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:background">@color/transparent</item> </style> 

然后在您的AndroidManifest.xml您可以使用其中一个作为默认值,另一个用于某些特定的活动,方法如下:

 <application ... android:theme="@style/MyThemeOverlay"> ... <activity android:name=".Activity1" /> <activity android:name=".Activity2" android:theme="@style/MyThemeNoOverlay" /> <activity android:name=".Activity3" /> <activity android:name=".Activity4" android:theme="@style/MyThemeNoOverlay" />