Использование стилей в Android

| 07.03.2014

Стилизация в Андроид очень напоминает работу со стилями в веб-разработке. При создании активити обычно внешний вид представлений — View также задается с помощью различных атрибутов.

Например, мы можем создать активити, которое отображает текстовое поле, и задать различные свойства для текста следующим образом:

1
2
3
4
5
6
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#000000"
    android:textSize="15sp"
    android:text="@string/my_text" />

Здесь мы отображаем текст, заданный строковым ресурсом my_text из файла strings.xml, и присваиваем ему черный цвет, а также размер шрифта 15sp. Такой способ вполне можно использовать, однако, если, например, экран содержит множество различных элементов, то задавать для каждого одни и те же атрибуты не очень удобно. xml-файл при этом будет очень громоздким. Если придется позднее что-то видоизменить, то нужно будет потратить достаточно много времени. По этой причине целесообразнее выносить все атрибуты во внешний файл, а самому элементу экрана назначать нужный стиль. Тогда разметка станет намного компактнее:

1
2
3
<TextView
    style="@style/MyTextStyle"
    android:text="@string/my_text" />

Здесь мы задаем атрибут style и прописываем ссылку на нужный стиль — MyTextStyle. Сам стиль берется из файла styles.xml, расположенный в каталоге res/values. Содержимое данного файла:

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyTextStyle" parent="@android:style/TextAppearance">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#000000</item>
        <item name="android:textSize">15sp</item>
    </style>
</resources>

Мы создаем набор свойств, находящихся внутри элемента style. Отображение текста мы наследуем от встроенного стиля TextAppearance, переопределяя лишь несколько его атрибутов: layout_width, layout_height, android:textColor и android:textSize. Теперь все свойства для TextView описаны только один раз и находятся во внешнем файле. Также можно наследоваться от собственных «наборов» стилей. Например, мы можем добавить новый стиль, переопределяющий наш MyTextStyle и изменяющий лишь цвет:

1
2
3
<style name="MyTextStyle.Grey">
    <item name="android:textColor">#СССССС</item>
</style>

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

Источник: zovut.ru

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*