Импортиране на ObtainStyledAttributes в Android

Рамката на Android предлага много предварително дефинирани теми и интерактивни графични обекти или Widgets за създаване на мобилен софтуер. Често може да искате да дефинирате персонализирана джаджа с уникален вид и усещане. Пакетите в приложния програмен интерфейс на Android, или API, съдържат дефиниции на Widget с методите на конструктора, които можете да замените, за да им дадете нов стил. Методът “Context.obtainStyledAttributes” внася в вашия Java код стил, който вие определяте статично в отделен XML файл. Това разделяне на модела, вида и кода на адаптера прави проекта ви в Android по-лесен за четене и отстраняване на грешки.

Декларирам-Styleable

Уебсайтът на разработчиците на Android препоръчва да дефинирате ресурсите в стила си във външен XML файл, за да направите проекта си по-лесен за поддръжка за вас и други програмисти. Дефинирането на атрибута "декларируем стил" във външния XML също прави повторното използване на тема в друг проект много по-лесно, отколкото извличането на Java код от конструктора на вашия Widget. Работното пространство на Eclipse прави атрибута "Decrevel-styleable" ("деклариращ стил") наличен за вашия проект чрез автоматично генерираната "R" класа в папката "gen" на вашия проект. Атрибутите в XML родителския възел определят елементите на стила на вашата тема, като например цвят, размер и шрифт.

Определение на приспособлението

Когато разширявате клас View или Widget, вие извиквате "receiveStyledAttributes", когато замените конструктора View със следния подпис на метода:

Преглед (контекст контекст, AttrsuteSet attrs)

Рамката на Android автоматично предава аргумента „attrs“ на вашия конструктор и вие го използвате, за да създадете обект TypedArray. Този обект TypedArray притежава атрибутите от външния ви набор "Decrevel-styleable" и ги импортирате с ред от код, като следния:

TypedArray yourStyles = context.obtainStyledAttributes (attrs, R.styleable.your_xml_style);

TypedArray

Елементите на стила от набора от атрибути се съхраняват в реда, в който сте ги дефинирали в XML. Извличате конкретен обект от стила от TypedArray с предварително дефиниран метод за достъп. Например, за да получите достъп до обект String от „Decrevel-styleable“, вие използвате ред от код, подобен на следния:

Строка yourString = yourStyles.getString (R.styleable.your_xml_style_string);

След това можете да добавите String към бутон или етикет в конструктора на вашия Widget. Същият процес се прилага и за другите свойства на персонализираната ви тема.

Оформление XML

След като дефинирате стил в XML и персонализиран Widget в Java, ще се върнете към XML редактора, за да дефинирате оформление. Работното пространство Eclipse прави този XML файл на разположение в класовете за активност във вашия Android проект. Тъй като темата и класа на Widget са дефинирани на отделни места, единствената информация, от която се нуждае файлът за оформление, са “id”, размерите и разположението на Widget. След това, в дефиницията за активност, свързвате XML оформлението в изгледа с код като следния:

setContentView (R.layout.main);

Файлът за оформление използва вашата дефиниция на Widget, която от своя страна използва вашата дефиниция на стил, така че вашата дейност не трябва да знае за тях.

Препоръчано