Поиск всех доступных стилей, определяемых темами платформы Android

В нескольких учебниках по стилю для Android используются элементы родительского стиля, которые я не могу найти в стилях android.R.style. * (http://developer.android.com/reference/android/R.style.html).

Несколько примеров из статьи http://android-developers.blogspot.com/2011/04/customizing-action-bar.html. Ник использует родительские стили, например:

<style name="MyDropDownNav" parent="android:style/Widget.Holo.Light.Spinner.DropDown.ActionBar">
...
</style>

или

<style name="MyActionBarTabStyle" parent="android:style/Widget.Holo.Light.ActionBarView_TabView">
...
</style>

Откуда берутся эти родительские стили? Можно ли перечислить все доступные родительские стили?

Спасибо.

Ответ 1

Как указано в "Применение стилей и тем" :

Платформа Android предоставляет большую коллекцию стилей и тем которые вы можете использовать в своих приложениях. Вы можете найти ссылку на все доступных стилей в классе R.style. Чтобы использовать стили, перечисленные здесь, замените все подчеркивания в имени стиля на период. Например, вы можете применить тему Theme_NoTitleBar с помощью "@android:style/Theme.NoTitleBar".

Ссылка R.style, однако, плохо документирована и не тщательно описывайте стили, поэтому просматривайте фактический исходный код для эти стили и темы помогут вам лучше понять, что которые каждый из них предоставляет. Для лучшей ссылки на Стили и темы Android, см. Следующий исходный код:

Эти файлы помогут вам научиться на примере. Например, в Исходный код для Android, вы найдете объявление для <style name="Theme.Dialog">. В этом определении вы увидите все свойства, которые используются для стилей диалоговых окон, которые используются Android рамки.

Ответ 2

Для "android: style/Widget.Holo.Light.ActionBarView_TabView" см.: http://developer.android.com/reference/android/R.style.html#Widget_Holo_Light_ActionBar_TabView ... и обратите внимание на уровень API, который был введен в!

Для "android: style/Widget.Holo.Light.Spinner.DropDown.ActionBar" попробуйте: http://developer.android.com/reference/android/R.style.html#Widget_Holo_Light_DropDownItem_Spinner

Последний - это всего лишь мое лучшее предположение - я не могу заставить список фактически упасть.

Ответ 3

Parent атрибут является необязательным при создании собственных themes или styles. В основном атрибуты Parent используются для наследования стилей, которые уже определены в самой платформе.

Если мы хотим наследовать theme или style и перезаписать некоторые функции, мы можем использовать атрибут Parent.

Здесь указана ссылка для всей доступной платформы styles.

И еще один совет:

Если вы хотите наследовать свой собственный style, который вы создали самим, значит следовать этому примеру, чтобы наследовать.

    <style name="MyDropDownNav.Red">
        <item name="android:textColor">#FF0000</item>
    </style>

Ответ 4

Здесь Official Google Documentation для Default List Themes и Styles Документация Google Android

Вы можете найти здесь, в этой документации

Я знаю, что ответ на вышеупомянутый вопрос заканчивается здесь, все еще уступая место реализации, поскольку он будет полезен для новичков.

Как реализовать их

Это то, что я получил от themes.xml

<style name="Theme.NoTitleBar">
    <item name="android:windowNoTitle">true</item>
</style>

Теперь to implement он в моем проекте

Мне нужно добавить следующую строку в мой Styles.xml файл

<style name="AppTheme" parent="android:Theme.NoTitleBar" />

В этом я создаю свой own theme с именем "AppTheme", который будет inherit его свойствами из already defined them by google. поэтому я упоминаю его в parent

Изучая themes.xml, а Styles.xml будет не только help to get the list of the already defined тем и стилей, но также help novices to have an idea how to create тем.

Поскольку тема, которую я упоминаю здесь, в parent, уже определена андроидом, поэтому мы будем использовать ее, указав имя android: на название темы.

Если вы хотите inherit your created theme, то

<style name="Theme2" parent="AppTheme">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style> 

то просто укажите style name to the parent, здесь я использую AppTheme в качестве родительской темы для theme2