Иерархия стилей в Android - каков порядок важности? - PullRequest
9 голосов
/ 14 июля 2011

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

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

Как я думаю, это работает в моем примере: применить стиль к строке, на которую ссылается макет строкиxml> применить стиль для всего списка, на который ссылается макет списка xml> применить стиль из пользовательской темы, на который ссылается стиль xml, на который ссылается манифест android

Я прав?Или я подхожу к этому неправильно.(просто ради путаницы, под ">" я имею в виду более важное значение, чем)

Ответы [ 3 ]

0 голосов
/ 20 февраля 2013

Стандартные темы имеют строки, которые определяют стиль ListView:

    <item name="listViewStyle">@android:style/Widget.ListView</item>

В вашей собственной теме вы можете сделать

    <item name="listViewStyle">@style/MyOwnListView</item>

То, что не определено в стиле ListView (собственный или по умолчанию), будет тем, что определено в теме, если вы определили это там.

0 голосов
/ 20 января 2019

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

  1. Применение стилей на уровне символов или абзацев через текстовые интервалы к классам, производным от TextView
  2. Применение атрибутов программным способом
  3. Применение отдельных атрибутов непосредственно к представлению
  4. Применение стиля к представлению
  5. Стиль по умолчанию
  6. Применение темы к коллекции представлений, деятельности или всему приложению
  7. Применение определенных стилей, специфичных для представления, таких как установка TextAppearance для TextView
0 голосов
/ 25 сентября 2011

Надеюсь, я понял ваш вопрос прямо здесь ...

Стили, которые вы определяете в файле styles.xml, всегда будут перезаписывать стили из темы, используемой в настоящее время для Android.

Но это работает только для атрибутов, которые вы перезаписываете.

Если вы оставите атрибут нетронутым, андроид предоставит ему стиль, а иногда это укусит вас в зад:)

Эту систему лучше всего описать так: Текстовое представление требует атрибута пример

<item name="android:textColor">#00FF00</item>

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

Надеюсь, это поможет.

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