Наложение панели действий не работает

Я следовал официальному руководству разработчика, чтобы наложить панель действий.

мой 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 и многих других приложениях. Может ли кто-нибудь дать мне полный ответ на это?

введите здесь описание изображения


person Krupal Shah    schedule 18.01.2015    source источник
comment
Пожалуйста, проверьте файл манифеста. Возможно, вы используете неправильную тему вместо CustomActionBarTheme.   -  person Shreyash Mahajan    schedule 10.02.2015
comment
@iDroidExplorer, можете ли вы написать полный ответ с кодом? Я буду признателен. Спасибо.   -  person Krupal Shah    schedule 10.02.2015
comment
вы настраиваете панель действий для наложения, но вы не сделали фон панели действий прозрачным. попробуйте добавить <item name="android:background">@drawable/actionbar_background</item> с @drawable/actionbar_background полупрозрачным изображением png   -  person am05mhz    schedule 12.02.2015
comment
@Krupal, не могли бы вы обновить свой вопрос, указав код вашего файла манифеста, чтобы я мог узнать то, о чем я спрашиваю ...   -  person Shreyash Mahajan    schedule 12.02.2015


Ответы (6)


Я вижу некоторые недоразумения в вашем коде:

  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>
person Simas    schedule 20.01.2015
comment
Я не согласен с вашим первым пунктом. потому что четко указано, что тема должна быть объявлена ​​стилем, и вы можете использовать ее, как показано ниже: developer.android.com/guide/topics/ui/themes.html#ApplyATheme - person Shreyash Mahajan; 10.02.2015
comment
Я использовал ваше решение, и оно работает нормально. Но название от ActionBar пропало. Вы можете помочь с этим? - person Bugs Happen; 23.04.2015
comment
это просто идеально! - person Hossam Alaa; 13.05.2016
comment
добавить отступы в макет android:paddingTop=?android:attr/actionBarSize - person N.Droid; 28.06.2016
comment
Часть «Для совместимости» сделала свое дело, даже при работе на устройстве с API версии 23. Полноэкранная активность по умолчанию, созданная студией Android, не добавила этого! - person Bruce; 18.09.2016

я думаю, вы упустили этот пункт руководства для разработчиков

Включить режим наложения

Только для Android 3.0 и выше

стиль.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>

и у меня есть две ссылки для примера. Пожалуйста, посмотрите на них для получения дополнительных разъяснений.

Учебное пособие по Android: наложение инструкций пользователя

Перемещение панели действий на следующий уровень

person Lokesh    schedule 11.02.2015
comment
Отлично, если кто-то использует скользящие вкладки и хочет показывать и скрывать панель действий при прокрутке, ключ здесь android:paddingTop="?android:attr/actionBarSize" - person Skynet; 20.04.2015

Попробуйте это вместо этого:

<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>
person LEO    schedule 20.01.2015

После двух часов поиска я чувствую себя обязанным добавить этот ответ здесь.

Что мне помогло, так это добавить все 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.

person Andy Ef    schedule 20.05.2018

Вы просто пропустили, что вам нужно настроить наложение в теме вашего приложения, как указано в документ

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

Пожалуйста, напишите, если проблема не решена с этим;)

person Ektos974    schedule 12.02.2015

Я делаю полностью настраиваемые представления, поэтому макет активности заполнит весь экран и поместит пользовательский LinearLayout вверху со всеми кнопками и значками.

person Iliiaz Akhmedov    schedule 11.02.2015