Описания стиля Android - PullRequest
       23

Описания стиля Android

1 голос
/ 20 января 2012

Я попытался изменить внешний вид счетчика, и мне это частично удалось. Я делаю это через основные части темы. Мне удалось изменить размер текста элемента счетчика (т. Е. Размер текста в выпадающей кнопке) с помощью моего themes.xml и styles.xml:

Мой файл themes.xml выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomTheme" parent="@android:Theme.Holo.Light">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:spinnerItemStyle">@style/CustomSpinnerItem</item>
</style>
</resources>

Мой файл styles.xml выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="CustomSpinnerItem" parent="@android:Widget.TextView.SpinnerItem">
    <item name="android:textAppearance">@style/CustomTextAppearance</item>
</style>
<style name="CustomTextAppearance">
    <item name="android:textSize">30dp</item>
</style>

</resources>

Однако я не могу найти атрибуты, которые отвечают за появление текста элементов в раскрывающемся списке счетчика. Я пробовал dropDownItemStyle среди прочего. По моему мнению, имена атрибутов не говорят сами за себя, поэтому я хотел узнать, есть ли документация о том, что атрибут делает, что в стиле, чтобы выяснить, какие атрибуты переопределить. Мне было очень сложно отследить все стили, используемые в теме, через themes.xml и styles.xml платформы, а затем попытаться найти правильные атрибуты методом проб и ошибок.

Я знаю, что можно изменить внешний вид, передав макеты адаптеру, однако это не совсем то, что я искал, поскольку (насколько мне известно) наследование можно использовать только в стилях, а не в макете. XML-файлы. Если бы я создал пользовательский макет для адаптера, мне пришлось бы создавать изображения с 9 патчами и т. Д., Что, на мой взгляд, занимает слишком много времени, если я хочу изменить только размер текста.

Конечно, возможно, я неправильно понял всю концепцию, так как я новичок в Android;)

1 Ответ

1 голос
/ 20 мая 2013

Вы, вероятно, нашли ответ с тех пор, как спросили, но для тех, кто ищет похожие вопросы:

Я не знаю списка имен атрибутов с хорошим объяснением того, что они делают (страница R.attr в основном дает информацию, которая уже есть в имени), но способ, которым я делаю это:

  • Начните с элемента, который я даю setDropDownViewResource (), в моем случае: android.R.layout.simple_spinner_dropdown_item и найдите.

  • Найдите определение его макета в \ sdk \ platform \ android-17 (версия конкретной платформы, чтобы избежать лишних результатов).

  • Получить его стиль из файла макета. В этом случае: ?android:attr/spinnerDropDownItemStyle

Теперь у нас есть нужное имя атрибута.

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

Если бы я создал собственный макет для адаптера, мне пришлось бы создать 9-патч изображения и т. Д.

Да, нет, макет определяет, какой тип элемента графического интерфейса у вас будет (текстовое поле, спиннер, кнопка изображения, пользовательский элемент ...), а не то, как они оформлены (фон из девяти патчей, цвета текста). ..), так что вам все равно придется возиться со стилями, чтобы получить правильный внешний вид.

Например, для визуальной согласованности я перенес стиль кнопки, флажка и спиннера из Theme.Holo в Gingerbread, но не разбирался с макетом, все, что я делал, - это вышеупомянутые шаги и просмотр результата (spinnerDropDownItemStyle в приведенный выше пример) в themes.xml, который дал мне имя стиля (например: Widget.Holo.DropDownItem.Spinner).

Затем я посмотрел , что , в файле styles.xml и импортировал его (и любого родителя *) в файл styles.xml моего проекта, выполнив поиск и копирование любой ссылки, связанной с Holo, в моем проекте и соответственно изменив пространство имен добавьте android: к атрибутам и замените ?android:attr на @style для того, что я копирую в мой файл styles.xml).

Пока мне вообще не приходилось возиться с макетами (даже наличие переключателей в диалоговых окнах счетчика в Gingerbread определяется атрибутом xml: android:checkMark).

  • Если у стиля нет родительского атрибута (например, Widget.Holo.DropDownItem.Spinner), тогда его родительский стиль совпадает со стилем за исключением последнего элемента (например, Widget.Holo.DropDownItem)
...