Определение цвета фона меню параметров - PullRequest
2 голосов
/ 28 ноября 2011

Я понял, что в меню параметров Android есть как минимум два цвета фона. На HTC Hero фон белый, а на Samsung Galaxy S II - черный.

Это стало проблемой, когда я установил значки для фоновых меню. Есть ли способ определения цвета фона меню параметров в Android?

Ответы [ 4 ]

3 голосов
/ 28 ноября 2011

Возможные решения:

  • Не используйте значки.
  • Дизайн иконок в соответствии с рекомендациями - http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html. Существует три различных рекомендации: до 2,2 (белый фон), 2,3 (черный фон) и 3,0+, так что много работы ...
  • Как предложил Profete162, используйте @android: drawable / ic_menu _ *

Для Android 4.0+ вы также можете установить светлую / темную тему Holo, которая гарантированно (по крайней мере, в теории) останется неизменной для разных производителей телефонов - так что она будет выглядеть одинаково в HTC Sense, Samsung TouchWiz и т. Д. .

2 голосов
/ 28 ноября 2011

Это действительно очень раздражающая проблема.

В моей реализации я всегда стараюсь использовать значки стандартов из android.R.drawable.IC_menu_ *, поэтому я уверен, что эти значкичасть фреймворка, и пользователи всегда удивляются, увидев их общие значки в моем приложении!

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

Вот, например, все иконки для Android 2.2: http://androiddrawableexplorer.appspot.com/ Вы можете мне доверять, эти значки всегда будут соответствовать вашим цветам.

1 голос
/ 29 ноября 2011

Прежде всего, ответьте на свой заглавный вопрос:

Вы можете сослаться на фон меню опций и прочитать его, прочитав атрибуты текущей темы .Атрибут для этого panelFullBackground.Например, установите его в качестве фона текстового представления в XML¹:

<TextView android:background="?android:attr/panelFullBackground" 
          ... />

Обратите внимание, что фон выглядит сплошным цветом, но это не так - это фактически растровое изображение.Если вы внимательно посмотрите, вы увидите серую рамку вверху (android 2.3 +) или тень (<= android 2.2), так что это немного сложно.К счастью, есть другой атрибут, называемый <code>panelColorBackground, который соответствует цвету фона отрисовываемого объекта как можно ближе.Так что если вы хотите просто нормальный цвет фона, используйте его вместо этого.

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

Относительно значков

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

Обычно вы должны использовать стиль иконок меню платформы.Это работает на всех устройствах и выглядит знакомым для ваших пользователей (пользовательские значки, которые не следуют этому, часто выглядят "неправильно" - например, астрономический файловый менеджер делает это, я считаю) .Вы можете сделать это вручную (см. рекомендации ) , но лучшей альтернативой является Android Asset Studio.Он поставляется в двух вариантах:

  • В виде веб-приложения
  • Интегрировано в последнюю версию плагина ADT для eclipse
    (под File->New->Other->Android Icon Set)

Рабочий процесс для обоих очень похож, выберите пункт «Значок меню» и следуйте указаниям мастера.Он предложит вам ввести простое черно-белое растровое изображение нужного вам значка, которое просто очерчивает его форму.После того, как вы укажете один, ресурсная студия сгенерирует все для вас.Поэкспериментируйте с опцией «clipart», в которой есть несколько примеров растровых изображений, готовых посмотреть, как это работает.По завершении веб-приложение предоставляет вам простой zip-файл, который можно извлечь в каталог вашего проекта, версия eclipse добавляет его непосредственно в проект, выбранный вами в мастере.

0 голосов
/ 28 ноября 2011

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

Просто создайте свой собственный макет меню в папке res / menu, установите стиль и используйте его.

...