Как поменять цвет меню на андроиде

Как поменять цвет меню на андроиде

Как сменить цвет меню настройки с белого на черный?
  • Facebook
  • Twitter

Amirphis152 | из Mi A1

нужно поставить темные обои на раб. стол, в 9 Андроиде будет отдельная кнопка для смены цвета темы

rabbit angry | из Mi A2

Amirphis152

нужно поставить темные обои на раб. стол, в 9 Андроиде б .

Screenshot_20181215-225057.png (93.08 KB, Downloads: 0)

2018-12-16 03:51:45 Upload

Screenshot_20181215-225105.png (125.42 KB, Downloads: 0)

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

Я пробовал некоторые побеги, такие как android: itemBackground = "# 000000" элемента элемента в элементе меню, но он не работал.

Как я могу это сделать?

Это явно проблема, которую испытывает множество программистов, и которой Google еще не предоставил удовлетворительное, поддерживаемое решение.

Есть много скрещенных намерений и недоразумений, плавающих вокруг сообщений по этой теме, поэтому, пожалуйста, прочитайте весь этот ответ, прежде чем отвечать.

Ниже я включаю более «утонченную» и хорошо прокомментированную версию взлома из других ответов на этой странице, также включающую идеи из этих очень близких вопросов:

Изменение цвета фона в меню Android

Как изменить цвет фона в меню параметров?

Android: настроить меню приложения (например, цвет фона)

Кнопка Android MenuItem Toggle

Возможно ли сделать фон меню опций Android непрозрачным?

Установка фона меню непрозрачным

Я тестировал этот хак на 2.1 (симулятор), 2.2 (2 реальных устройства) и 2.3 (2 реальных устройства). У меня нет никаких 3.X-планшетов для тестирования, но я буду публиковать любые необходимые изменения здесь, когда / если я это сделаю. Учитывая, что 3.X-планшеты используют Action Bars вместо меню Options, как описано здесь:

Этот хак почти наверняка ничего не сделает (никакого вреда и ничего хорошего) на таблетках 3.X.

ЗАЯВЛЕНИЕ О ПРОБЛЕМЕ (прочитайте это до ответа триггера с отрицательным комментарием):

Меню «Опции» имеет разные стили на разных устройствах. Чистый черный с белым текстом на некоторых, чистый белый с черным текстом на некоторых. Я и многие другие разработчики хотят контролировать цвет фона в ячейках меню «Параметры», а также цвет текста меню «Параметры» .

Читайте также:  Lenovo miix 320 клавиатура

Некоторым разработчикам приложений нужно установить цвет фона ячейки (не цвет текста), и они могут сделать это более чистым способом, используя стиль android: panelFullBackground, описанный в другом ответе. Однако в настоящее время нет способа управлять цветом текста меню «Параметры» со стилями, и поэтому этот метод можно использовать только для изменения фона на другой цвет, который не заставит текст «исчезнуть».

Мы с удовольствием сделаем это с документально подтвержденным, надежным решением, но его просто нет на Android Поэтому мы должны использовать решение, которое работает в текущих версиях и предназначено для минимизации вероятности сбоя / взлома в будущих версиях. Нам нужно решение, которое изящно не возвращается к поведению по умолчанию, если оно должно потерпеть неудачу.

Существует много законных причин, по которым может потребоваться контролировать внешний вид меню «Опции» (как правило, чтобы соответствовать визуальному стилю для остальной части приложения), поэтому я не буду останавливаться на этом.

Об этом сообщается об ошибке Google Android: добавьте свою поддержку, сняв эту ошибку (обратите внимание, что Google отговаривает «меня тоже»): просто звезды достаточно):

Несколько плакатов предложили взлом с участием LayoutInflater.Factory. Предлагаемый взлом работал для Android Новый код в Android 2.3 нарушил это предположение и привел к исключению NullPointerException.

Мой слегка утонченный хак ниже не полагается на это предположение.

Кроме того, хаки также полагаются на использование внутреннего недокументированного имени класса «com.android.internal.view.menu.IconMenuItemView» в виде строки (а не как типа Java). Я не вижу никакого способа избежать этого и выполнить поставленную цель. Тем не менее, можно сделать взломать осторожным способом, который отпадет, если «com.android.internal.view.menu.IconMenuItemView» не появится в текущей системе.

Опять же, поймите, что это взломать и ни в коем случае не утверждаю, что это будет работать на всех платформах. Но мы, разработчики, не живем в фантастическом академическом мире, где все должно быть по книге: у нас есть проблема для решения, и мы должны решить ее как можно лучше. Например, маловероятно, что «com.android.internal.view.menu.IconMenuItemView» будет существовать на таблетках 3.X, поскольку они используют Action Bars вместо меню Options.

Читайте также:  Заправка картриджей 122 hp цветной

Наконец, некоторые разработчики решили эту проблему, полностью подавив меню «Настройки Android» и написав свой собственный класс меню (см. Некоторые из приведенных выше ссылок). Я не пробовал это, но если у вас есть время написать свой собственный просмотр и выяснить, как заменить вид Android (я уверен, что черт в деталях здесь), то это может быть приятное решение, которое не требует каких-либо Недокументированные хаки.

Чтобы использовать этот код, вызовите addOptionsMenuHackerInflaterFactory () ONCE из вашей активности onCreate () или вашей активности onCreateOptionsMenu (). Он устанавливает фабрику по умолчанию, которая повлияет на последующее создание любого меню параметров. Он не влияет на уже созданные меню параметров (предыдущие хаки использовали имя функции setMenuBackground (), что очень вводит в заблуждение, так как функция не устанавливает никаких свойств меню до того, как она вернется).

Спасибо за чтение и наслаждение!

Проведя значительное количество времени, пытаясь использовать все параметры, единственный способ получить приложение с помощью AppCompat v7 для изменения фона меню переполнения – использовать атрибут itemBackground:

Протестировано с API 4.2 до 5.0.

Атрибут стиля для фона меню – android:panelFullBackground .

Несмотря на то, что говорит документация, он должен быть ресурсом (например, @android:color/black или @drawable/my_drawable ), он будет сбой, если вы используете значение цвета напрямую.

Это также избавит вас от границ элементов, которые я не смог изменить или удалить с помощью решения primalpop.

Что касается цвета текста, я не нашел способа установить его в стилях в 2.2, и я уверен, что все пробовал (так я обнаружил атрибут фона меню). Для этого вам нужно будет использовать решение primalpop.

Для Android 2.3 это может быть сделано с очень тяжелым взломом:

Читайте также:  Почему не включается антивирус

Основной причиной проблем с Android 2.3 является то, что в LayoutInflater mConstructorArgs [0] = mContext устанавливается только во время выполнения вызовов

(Не стесняйтесь проголосовать за этот ответ;)) Я тестировал его для работы на Android 2.3 и продолжал работу над более ранними версиями. Если что-то сломается снова в более поздних версиях Android, вы просто увидите стиль меню по умолчанию вместо

Просто столкнулся с этой проблемой, в приложении, которое должно было быть совместимо с Gingerbread и по-прежнему сохранять как можно больше стилей с устройств с поддержкой Holo.

Я нашел относительно чистое решение, которое работало нормально для меня.

В теме я использую 9-патч для рисования фона, чтобы получить пользовательский цвет фона:

Я отказался от попыток стилизовать цвет текста и просто использовал Spannable для установки цвета текста для моего элемента в коде:

Одно дело отметить, что вы, ребята, слишком усложняете проблему, как и многие другие сообщения! Все, что вам нужно сделать, это создать гибкие селектора с любыми фонами, которые вам нужны, и установить их для фактических элементов. Я просто потрачу два часа на то, чтобы попробовать ваши решения (все они предложены на этой странице), и никто из них не работал. Не говоря уже о том, что существует множество ошибок, которые существенно замедляют вашу производительность в тех блоках try / catch, которые у вас есть.

В любом случае здесь находится файл xml в меню:

Теперь в вашем item1_selector:

В следующий раз, когда вы решите пойти в супермаркет через Канаду, попробуйте Google Maps!

Спасибо, Маркус! Он работает на 2.3 плавно, исправляя некоторые синтаксические ошибки, вот фиксированный код

Есть ContextMenu и ActionBar.
В первом нужно как-то изменить цвет селектора.
Во втором, цвет при нажатии на пункт меню.

Примерно представляю как работать с фигурами и селекторами, но не представляю какие пункты отвечают за цвета.

Ссылка на основную публикацию
Как пользоваться разверткой видео
Развертка ручная – это режущий инструмент. С его помощью проводится окончательная корректировка после сверлений, зенкерований и растачиваний. Что же это...
Как повернуть объект в пейнте
В этом разделе рассмотрены следующие инструменты: Инструмент «Перемещение выделенной области» Этот инструмент позволяет перемещать, поворачивать и масштабировать выделенную область вместе...
Как повернуть фото в фотошопе cs6
Добрый день, наши любимые фотошоперы! Бывает так, что возникает необходимость повернуть изображение в фотошопе. Причины могут быть разные: Не правильно...
Как пользоваться программой про100 для мебели
Способ работы зависит от задачи, поставленной пользователем при работе в программе PRO100. Создадим проект кухни из библиотечных элементов, с добавлением...
Adblock detector