Mostrar ImageView parcialmente detrás de la barra de acción transparente
La aplicación Google Maps tiene una barra de acción transparente, a través de la cual el mapa es visible.
Puedo establecer la transparencia de la barra de acción usando esto:
<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>
Pero, ¿cómo puedo mostrar mi ImageView detrás de la ActionBar?
3 answers
Puede habilitar el modo de superposición del ActionBar
. Para hacerlo tienes que establecer (android:)windowActionBarOverlay
item en el tema a true
.
<style name="MyTheme" parent="Theme.Sherlock">
...
<item name="windowActionBarOverlay">true</item> <!-- for ActionBarSherlock -->
<item name="android:windowActionBarOverlay">true</item>
</style>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-24 14:20:55
También puede configurarlo en tiempo de ejecución:
requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
Esto hará que la barra de acción sea una barra flotante semitransparente.
Como cualquier requestWindowFeature...
, esto debe ser llamado antes de agregar contenido.
Después de setContentView
, puede establecer un fondo desde su Drawable
con esto:
getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bg));
Cambiar getActionBar
con getSupportActionBar
para ActionBarSherlock
actionbar_bg.xml
con el elemento raíz de forma :
<solid android:color="#64000000" />
Aunque encuentro que la solución de Tomik es genial, esto será útil para esos casos únicos para unas pocas actividades en lugar de un estilo general.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-14 15:53:43
Si alguien necesita la barra transparente pero solo para ciertas actividades mientras usa una sólida en el resto de ellas, podría valer la pena crear dos estilos diferentes y usar el manifiesto para obtener control sobre él:
<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>
Y luego en su AndroidManifest.xml
puede usar uno de ellos como predeterminado y el otro para algunas actividades específicas haciendo algo como:
<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"
/>
...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-24 16:39:53