Google Mapsアプリケーションには透明な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>
しかし、どうすればActionViewの背後にImageViewを表示できますか?
ActionBar
のオーバーレイモードを有効にできます。それを行うには、(Android:)windowActionBarOverlay
テーマのアイテムをtrue
に。
<style name="MyTheme" parent="Theme.Sherlock">
...
<item name="windowActionBarOverlay">true</item> <!-- for ActionBarSherlock -->
<item name="Android:windowActionBarOverlay">true</item>
</style>
実行時に設定することもできます。
requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
これにより、ActionBarが半透明のフローティングバーになります。
他のようにrequestWindowFeature...
、これはコンテンツを追加する前に呼び出す必要があります。
setContentView
の後、Drawable
から背景を次のように設定できます。
getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bg));
ActionBarSherlockのgetActionBar
をgetSupportActionBar
に変更します
actionbar_bg.xml
shapeのルート要素:
<solid Android:color="#64000000" />
私はTomik'sの解決策は素晴らしいと思いますが、これは全体的なスタイルではなく、いくつかのアクティビティの1回限りのケースに役立ちます。
誰かが透明なバーを必要とするが、残りの部分でソリッドなバーを使用しているときに特定のアクティビティのみが必要な場合は、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
これらの1つをデフォルトとして使用し、他の1つを特定のアクティビティに使用するには、次のようにします。
<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"
/>
...
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" />