web-dev-qa-db-ja.com

アクションバーのオーバーレイが機能しない

私は 公式開発者ガイド に従ってアクションバーをオーバーレイしていました。

俺の 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であり、予想される出力は公式ガイドの出力と同様です。enter image description here

代わりに、私の場合、出力は次のとおりです。 enter image description here

(背景色をアクティビティに設定しましたが、アクションバーをオーバーレイしていません。)

私がやっていることが間違っているなら助けてください。

編集:

Airnbや他の多くのアプリで、このような同様のアクションバーが必要でした。誰も私にこれに対する完全な答えを与えることができますか?

enter image description here

16
Krupal Shah

あなたのコードにはいくつかの誤解があります:

  1. windowActionBarOverlayは、ActionBarのスタイルではなく、テーマで指定する必要があります。
  2. サポートテーマで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>
35
Simas

開発者ガイド のこの点を見逃していると思います

オーバーレイモードを有効にする

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つのリンク例があります。詳細については、リンクをご覧ください。

Androidチュートリアル:ユーザー指示付きのオーバーレイ

ActionBarを次のレベルにプッシュする

4
Lokesh

代わりにこれを試してください:

<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>
1
LEO

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を使用していることに言及する必要があります。

1
Andy Ef

ドキュメント

 <!-- the theme applied to the application or activity -->

問題がそれで解決しない場合はフィードバックしてください;)

0
Ektos974