Установить значок в меню на основе темы

1

Я создаю приложение, поддерживающее версии 2.1 и до того, что доступно в настоящее время. Теперь я хотел бы использовать доступные возможности для текущей темы пользователя и/или версии Android при разработке ActionBar, который я создаю.

Доступные для каждой версии версии, доступные в Android, являются четкими и недвусмысленными, идеально подходящими для моих нужд. Проблема. Я не могу получить доступ, например, @android: drawable/ic_menu_refesh в моих XML файлах на протяжении всего моего проекта. Конечно, есть возможность копировать значки из определенной версии Android и использовать их, но я не могу понять, как я сделаю это здоровым, не копируя каждую версию значка из каждой сборки и отслеживая, какую версию Android в настоящее время работает и ссылается на подходящую возможность.

Другая проблема, темы (?), Такие как Sense, делают вещи даже намного сложнее. В моем приложении я хотел бы использовать текущую тему устройства. В моем случае у меня есть ICS-устройство, которое использует Dark Holo-theme и 2.3.6-устройство, которое использует свою тему по умолчанию. В этих случаях это означает выбор подходящего светлого цвета для ActionBar/menu. Проблема. В Sense на моем HTC Sensation S цвет фона элементов меню белый, что означает, что теперь мне нужно подобрать подходящую темную иконку.

Как я могу это сделать, чтобы использовать текущую тему устройства и по-прежнему предоставлять адаптируемые чертежи, чтобы они соответствовали внешнему виду и теме?

Теги:
themes
drawable

2 ответа

0
Лучший ответ

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

1

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

Как правило, вам нужно будет создать свои собственные значки для каждого элемента меню/элемента/элемента панели действий/и т.д. Существуют простые инструменты, которые могут создавать пользовательские и стандартные значки Android для различных системных тем. Вы можете использовать идентификаторы ресурсов в своих папках res чтобы иметь разные значки для разных версий/макетов/плотностей API/и т.д.

http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html

Я не понимаю, почему вы устанавливаете свои значки в серый цвет... Я думаю, что вы забываете, что ваше приложение задает тему, вы можете выбрать любую нужную системную тему или создать пользовательскую тему, которая простирается от системной темы. Независимо от того, выбираете ли вы темноту или свет, вам нужны только значки для темы, которую вы задали. Единственный кикер здесь - убедиться, что у вас есть значки для разных версий API, которые отличаются (например, значки меню 2.2 против 2.3 против 3. 0+), и все, что вам нужно, это сделать каждую версию API и использовать идентификаторы ресурсов, чтобы убедиться, что ваш приложение использует правильный.

Если ваше приложение поддерживает более одной темы, вы можете использовать разные значки для каждой темы. Посмотрите, как это сделать в моем ответе на аналогичный вопрос:

Изменение значка меню ActionBar в зависимости от стиля

Ещё вопросы

Сообщество Overcoder
Наверх
Меню