私は 公式開発者ガイド に従ってアクションバーをオーバーレイしていました。
俺の style.xml
は次のとおりです。
<!-- Base application theme. -->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="actionBarStyle">@style/CustomActionBarTheme</item>
</style>
<style name="CustomActionBarTheme"
parent="@Android:style/Theme.Holo">
<item name="Android:windowActionBarOverlay">true</item>
</style>
私のmidSdkVersionは14であり、予想される出力は公式ガイドの出力と同様です。。
代わりに、私の場合、出力は次のとおりです。
(背景色をアクティビティに設定しましたが、アクションバーをオーバーレイしていません。)
私がやっていることが間違っているなら助けてください。
Airnbや他の多くのアプリで、このような同様のアクションバーが必要でした。誰も私にこれに対する完全な答えを与えることができますか?
あなたのコードにはいくつかの誤解があります:
windowActionBarOverlay
は、ActionBar
のスタイルではなく、テーマで指定する必要があります。Holo
を使用する理由はありません。これはサポート性を損なうだけです。これを試して:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="Android:actionBarStyle">@style/MyActionBar</item>
<item name="Android:windowActionBarOverlay">true</item>
<!--For compatibility-->
<item name="actionBarStyle">@style/MyActionBar</item>
<item name="windowActionBarOverlay">true</item>
</style>
<color name="transparent_black">#80000000</color>
<style name="MyActionBar" parent="Widget.AppCompat.ActionBar.Solid">
<item name="Android:background">@color/transparent_black</item>
<!--For compatibility-->
<item name="background">@color/transparent_black</item>
</style>
開発者ガイド のこの点を見逃していると思います
オーバーレイモードを有効にする
For Android 3.0以降のみ
style.xml
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
parent="@Android:style/Theme.Holo">
<item name="Android:windowActionBarOverlay">true</item>
</style>
</resources>
Android 2.1以降)
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
parent="@Android:style/Theme.AppCompat">
<item name="Android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="windowActionBarOverlay">true</item>
</style>
</resources>
レイアウトの上部マージンを指定
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingTop="?android:attr/actionBarSize">
...
</RelativeLayout>
また、2つのリンク例があります。詳細については、リンクをご覧ください。
代わりにこれを試してください:
<style name="AppBaseTheme" parent="Android:style/Theme.Holo.Light.DarkActionBar">
</style>
<style name="OverlayActionBarTheme" parent="AppBaseTheme">
<item name="Android:windowActionBarOverlay">true</item>
<item name="Android:actionBarStyle">@style/Holo.ActionBar.Overlay</item>
</style>
<style
name="Holo.ActionBar.Overlay"
parent="@Android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="Android:background">#80000000</item>
</style>
2時間検索した後、この回答をここに追加する必要があります。
私にとってのトリックは、次の6行すべてをstyles.xml
に追加することでした:
<item name="Android:windowActionModeOverlay">true</item>
<item name="Android:windowActionBarOverlay">true</item>
<item name="Android:windowActionBar">true</item>
<item name="windowActionModeOverlay">true</item>
<item name="windowActionBarOverlay">true</item>
<item name="windowActionBar">true</item>
私の知る限り、これらの行はすべて同じことを行いますが、異なるAPIレベルは特定の行のみをリッスンします。最低限のAPIレベル19を使用していることに言及する必要があります。