Un estil és un conjunt de propietats que especifiquen l'aspecte i el format d'una View o finestra, un estil pot especificar propietats com l'alçada, color d'una font... es pot definir amb un XML.

Els estils d'Android comparteixen una filosofia similar a les fulles d'estil, permetent separar el disseny del contingut.

Per exemple, podem transformar:

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#00FF00"
android:typeface="monospace"
android:text="@string/hello" />

En:

<TextView
android:text="@string/hello" />

Tots els atributs relacionats amb els estils s'han retirat del XML del disseny i s'han posat en una definició d'estil anomenada CodeFont, que s'aplica a continuació amb l'atribut style. Un tema és un estil aplicat a tota una activitat o a una aplicació, en lloc de a una única View (com a l'exemple anterior). Quan s'aplica un estil com a tema, cada vista de l'activitat o aplicació tindrà les propietats de l'estil.

Per exemple, es pot aplicar el mateix estil CodeFont com a tema per a una activitat i després tot el text d'aquesta activitat tindrà una font senzilla de color verd.

Per tant, s'assemblen molt als CSS, els fills hereten els estils, com la tipografia, el color...

El tema s'aplica automàticament a tots els components, en canvi els estils no. El tema es pot aplicar per activitats o per aplicació, per tant està definit mitjançant l'android manifest. Si a part de tot el tema apliques un estil, aquest preval.

Per definir-lo es fa amb un arxiu XML que està a recursos.

el nom del fitxer el que vulguis, l'arrel és recursos.

Per crear un conjunt d'estils, cal deixar un fitxer XML al directori res/values/ del projecte, amb un nom qualsevol.

Per a cada estil que vulguem crear, caldrà afegir un element <style> a l'arxiu amb un nom que identifica de forma única l'estil. A continuació, cal afegir un element <item> per a cada propietat d'aquest estil, amb un nom que declara la propietat d'estils i un valor per associar-hi. El valor per a l'<item> pot ser una cadena de paraules clau, un color hexadecimal, una referència a un altre tipus de recurs o a un altre valor en funció de la propietat de l'estil.

Per exemple:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CodeFont" parent="@android:style/TextAppearance.Medium">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#00FF00</item>
<item name="android:typeface">monospace</item>
</style>
</resources>

Els estils per programació es poden modificar. Necessitarem posar un identificador.

Nosaltres podem agafar un estil i com a pare agafa el textappearance, en aquest exemple tenim l'item android:textcolor que modifiquem el color.

Tots els fills de <resources> fan un objecte de recurs d'aplicació en temps de compilació, es pot fer referència pel nom <style>

L'atribut parent a l'element <style> és opcional i especifica l'ID del recurs d'un altre estil del qual aquest estil ha d'heretar propietats. A continuació pots anul·lar les propietats d'estil heretades si vols.

Un estil que es vol utilitzar com una activitat o un tema d'aplicació es defineix en XML exactament igual per a un estil que per a una vista. Un estil com el que s'ha definit abans es pot aplicar com un estil per a una vista única o tema d'una activitat o aplicació sencera.

Un exemple de l'herència d'estils:

<style name="textVerd" parent="@android:style/TextAppearance">
<item name="android:textColor">#00FF00</item>
</style>

En el cas d'heretar d'un estil propi, la sintaxi és una mica diferent:

<style name="CodeFont.Rojo">
<item name="android:textColor">#FF0000</item>
</style>
<style name="CodeFont.Rojo.Gran">
<item name="android:textSize">30sp</item>
</style>

Permet crear un estil propi, nom codefont de tipus vermell, després tenim un subtipus.

Per aplicar l'estil posem style i li apliquem el codi font. Si ho volem fer per a tota l'aplicació ha de ser a nivell de theme, molts estils empaquetats defineixen un tema.

Per tant, hi ha dues maneres de configurar un estil:

  • Per a vista individual, afegint l'atribut style a un element View al XML pel seu disseny.
  • Per a tota una activitat o aplicació, afegint l'atribut android:theme a l'activity o element <application> al manifest d'Android.
<TextView android:text="@string/hello" />
<application android:theme="@style/CustomTheme">
<activity android:theme="@android:style/Theme.Dialog">

Android també ofereix altres recursos incorporats, hi ha molts temes predefinits que es poden utilitzar per evitar escriure tu mateix.

<color name="custom_theme_color">#b0b0ff</color>
<style name="CustomTheme" parent="android:Theme.Light">
<item name="android:windowBackground">@color/custom_theme_color</item>
<item name="android:colorBackground">@color/custom_theme_color</item>
</style>

En aquest cas, per crear un tema s'hereta d'un tema existent i se li fan les modificacions que volem.

Android, theme.Light en és un de clar, amb Android Studio es poden veure els temes fàcilment, i podem veure un color que està predefinit. Els estils es creen de la mateixa manera que els estils de vista però s'usa el color estàndard.

Exemple.