Подтвердить что ты не робот

Показать 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?

4b9b3361

Ответ 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"
      />

...