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.

introduzca la descripción de la imagen aquí

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?

Author: nhaarman, 2012-11-14

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>
 43
Author: Tomik,
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.

 26
Author: Siddharth Lele,
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"
      />

...

 10
Author: Mariano Latorre,
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