Показать ImageView частично за прозрачным ActionBar
Приложение Google Maps имеет прозрачный ActionBar, через который карта видна.
![enter image description here]()
Я могу установить прозрачность 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>
Но как я могу показать свой ImageView за ActionBar?
Ответы
Ответ 1
Вы можете включить режим наложения ActionBar
. Для этого вам нужно установить (android:)windowActionBarOverlay
элемент в теме true
.
<style name="MyTheme" parent="Theme.Sherlock">
...
<item name="windowActionBarOverlay">true</item> <!-- for ActionBarSherlock -->
<item name="android:windowActionBarOverlay">true</item>
</style>
Ответ 2
Вы также можете установить его во время выполнения:
requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
Это будет ActionBar полупрозрачной плавающей полосой.
Как и любой requestWindowFeature...
, это нужно вызвать перед добавлением содержимого.
После setContentView
вы можете установить фон из Drawable
с помощью этого:
getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bg));
Измените getActionBar
на getSupportActionBar
для ActionBarSherlock
actionbar_bg.xml
с корневым элементом формы:
<solid android:color="#64000000" />
Хотя я считаю решение Томика отличным, это будет полезно для тех одноразовых случаев для нескольких видов деятельности, а не для всех типов плат.
Ответ 3
Если кто-то нуждается в прозрачном баре, но только для определенных действий при использовании солидного в остальных, возможно, стоит создать два разных стиля и использовать манифест, чтобы получить контроль над ним:
<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"
/>
...