Nano Hash - криптовалюты, майнинг, программирование

Почему мое раскрывающееся меню переполнения находится в верхней части панели действий?

выпадающий список в верхней части панели действий

Разве по умолчанию он не должен быть под панелью действий? Так что я делаю неправильно?

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

рез/меню/main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.test.MainActivity" >

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:title="@string/action_settings"
    app:showAsAction="never"/>
</menu>

  • У меня такая же проблема с новым установленным и обновленным SDK в Windows 7 (с новым и чистым тестовым проектом Hello World). Я не могу понять это. На моей машине с Linux это работает, но этот SDK немного старше. Надеюсь, кто-то может помочь! 07.12.2014
  • В Material Design всплывающее меню всегда размещается поверх ActionBar. Просто посмотрите на приложения Google, которые уже используют Material Design. 07.12.2014

Ответы:


1

Согласно спецификациям Material Design, переполнение меню должно отображаться поверх панели действий:

Меню — это временный лист бумаги, который всегда перекрывает панель приложения, а не является ее продолжением.

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

Это поведение по умолчанию для приложений Android Lollipop, а также для любых приложений, использующих библиотеку поддержки AppCompat v7.

07.12.2014

2

Это поведение используемой вами темы AppCompat по умолчанию. В соответствии с рекомендациями по дизайну материалов ожидается, что меню переполнения появится поверх его привязки, панели действий.

Вы можете заставить его отображаться под панелью действий, установив для своей темы overlapAnchor на false

   <style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow" >
         <item name="overlapAnchor">false</item>
         <item name="dropDownVerticalOffset">?attr/actionBarSize</item>
    </style>
07.12.2014
  • Я не знал, что вы можете форсировать меню под ActionBar, это очень интересно. Но следует отметить, что обычно отклоняться от рекомендаций — плохая идея. 07.12.2014
  • Я уже упоминал об этом, прочитайте мой ответ еще раз, что ожидается, что он будет перекрываться. 07.12.2014
  • Не работает для меня. Я на API level 21. dropDownVerticalOffset не найден. Поэтому я использовал android:dropDownVerticalOffset вместо этого. Но все еще не работает. 01.04.2015
  • ХОРОШО! Ответ @Tuksn сработал для меня .. Хотя вы добавили dropDownVerticalOffset к решению, кажется, вы просто хотите показать, что смещение может быть задано. Кроме того, я хотел бы подчеркнуть, что смещение начинается с нижней части панели действий. 01.04.2015

  • 3

    Наконец, это работает для меня:

    <resources>
        <style name="AppBaseTheme" parent="Theme.AppCompat.Light" />
    
        <style name="AppTheme" parent="AppBaseTheme">
            <item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
        </style>
    
        <style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
            <!-- Required for pre-Lollipop. -->
            <item name="overlapAnchor">false</item>
    
            <!-- Required for Lollipop. -->
            <item name="android:overlapAnchor">false</item>
        </style>
    
    </resources>
    

    Источник: https://stackoverflow.com/a/27134045/3586815

    Спасибо Николе Деспотоски за подсказку.

    08.12.2014
  • Спасибо за полный ответ, в отличие от других ответов на вопрос! 01.04.2015

  • 4

    Это новое значение по умолчанию для Material Design. Всплывающие меню будут отображаться из Button, который их открыл.

    Это сделано для усиления визуальной связи между Button и всплывающим меню. Просто посмотрите на приложения Google, которые уже используют Material Design, там всплывающие меню действуют точно так же.

    07.12.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..