36

Googleマップアプリケーションには、地図が表示される透明な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を表示するにはどうすればよいですか?

4

4 に答える 4

43

のオーバーレイモードを有効にできますActionBar(android:)windowActionBarOverlayこれを行うには、テーマのアイテムをに設定する必要がありますtrue

<style name="MyTheme" parent="Theme.Sherlock">
    ...
    <item name="windowActionBarOverlay">true</item> <!-- for ActionBarSherlock -->
    <item name="android:windowActionBarOverlay">true</item>
</style>
于 2012-11-14T15:25:09.940 に答える
26

実行時に設定することもできます。

requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

これにより、ActionBarは半透明のフローティングバーになります。

他の場合と同様requestWindowFeature...に、これはコンテンツを追加する前に呼び出す必要があります。

の後にsetContentView、これを使用して背景を設定できますDrawable

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

ActionBarSherlockgetActionBarで変更getSupportActionBar

actionbar_bg.xml形状のルート要素を使用:

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

Tomikのソリューションは素晴らしいと思いますが、これは、全面的なスタイルではなく、いくつかのアクティビティの1回限りのケースに役立ちます。

于 2012-11-14T15:38:39.570 に答える
10

誰かが透明なバーを必要としているが、残りの部分で塗りつぶされたバーを使用している特定のアクティビティにのみ必要な場合は、2つの異なるスタイルを作成し、マニフェストを使用してそれを制御する価値があります。

<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"
      />

..。

于 2013-07-24T15:36:13.653 に答える
1

ここに画像の説明を入力してください

styles.xml内:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="colorPrimary">@color/semiTransparent5</item>
</style>

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" >
    <item name="windowActionBarOverlay">true</item>
</style>

activity_main.xml内:

<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.material.appbar.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:layout_scrollFlags="scroll|enterAlways"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</com.google.android.material.appbar.AppBarLayout>

<include layout="@layout/content_main" />

于 2020-01-14T22:47:08.160 に答える