Подтвердить что ты не робот

Стилизация всплывающего меню в Android 5.0

Я прикладываю приложение для Android 5.0, я использую последнюю библиотеку совместимости, вот как выглядит мой стиль.

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/theme_accent</item>
        <item name="colorAccent">@color/theme_accent_secondary</item>
    </style>

    <style name="AppThemeDark" parent="Theme.AppCompat">
        <item name="colorPrimary">@color/theme_accent</item>
        <item name="colorAccent">@color/theme_accent_secondary</item>
    </style>
</resources>

(Цвет ActionBar устанавливается программно.)

Теперь я хочу, чтобы в меню переполнения/всплывающего окна был темный фон, как в реализации голограммы, но я не могу заставить его работать, вот что он выглядит: enter image description here

Я попытался установить popupMenuStyle, но это не сработало.

Как сделать всплывающее меню темнее?

4b9b3361

Ответ 1

Решила мою проблему, используя этот стиль:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/theme_accent</item>
    <item name="colorAccent">@color/theme_accent_secondary</item>
    <item name="actionBarStyle">@style/AbStyle</item>
    <item name="actionModeBackground">@color/actionmode_bg</item>
</style>

<style name="AbStyle" parent="Widget.AppCompat.Toolbar">
    <item name="elevation">2dp</item>
    <item name="displayOptions">homeAsUp|showTitle</item>
    <!--showHome-->
</style>

<style name="AppThemeDark" parent="Theme.AppCompat">
    <item name="colorAccent">@color/theme_accent_secondary</item>
    <item name="actionBarStyle">@style/AbStyle</item>
</style>

Мне пришлось использовать Widget.AppCompat.Toolbar в качестве родительского actionBarStyle

Ответ 2

Остановить использование ActionBar. Если вы хотите, чтобы ToolBar был настроен как ActionBar, следуйте этому руководству в блоге разработчиков Android.

Он фактически упоминает ваш прецедент в Dark Action Bar и предоставляет этот код:

<android.support.v7.widget.Toolbar
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="@dimen/triple_height_toolbar"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

Ответ 3

Не полный ответ, а то, что я нашел до сих пор:

В прошлых версиях вам нужно было указать drawable (Проверить https://github.com/StylingAndroid/StylingActionBar код и учебники)

По-видимому, теперь это цвет. Чтобы изменить его, вам нужно указать следующую тему:

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
        <item name="android:actionBarPopupTheme">@style/popupNew</item>
    </style>

    <style name="popupNew" parent="android:ThemeOverlay.Material.Light">
        <item name="android:colorBackground">@color/red</item>
    </style>

</resources>

Это работает правильно, если тема, примененная к приложению, является именно этим. Если я добавлю android:actionBarPopupTheme в существующую тему, это не сработает. Я пытаюсь понять, почему.

Ответ 4

Добавить свойство popupTheme на панель инструментов:

<android.support.v7.widget.Toolbar
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:id="@+id/toolbar"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="@color/color_primary"
  app:theme="@style/Theme.AppCompat.Light"
  app:popupTheme="@style/Theme.AppCompat" />

Или определите новый стиль для вашей панели инструментов:

<style name="MyToolBarStyle" parent="Widget.AppCompat.Toolbar">
    <item name="android:background">@color/green</item>
    <item name="popupTheme">@style/Theme.AppCompat.Light</item>
    <item name="theme">@style/Theme.AppCompat</item>
</style>