Stili e temi – Lezione 20 di Android

Utilizzare stili e temi nelle applicazioni Android, separando le regole di stile dagli elementi, si favorisce la manutenibilità del codice e favorire il riutilizzo del codice

In Android per stili si intendono tutte le proprietà che consentono di specificare l’aspetto di una View o una finestra. Si tratta di proprietà come l’altezza, il padding, il colore del font e la sua grandezza. Gli stili vengono definiti in XML in modo da separare la parte grafica dal resto come avviene nello sviluppo di applicazioni web con i file CSS in cui si separata la struttura del codice dalle regole di stile applicate. Ad esempio, invece di scrivere:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#FFFFFF"
    android:typeface="arial"
    android:text="@string/name" />

In Android andando a definire le regole di stile in un file separato si incrementa la manutenibilità del codice e si rende riutilizzabile lo stile. Ad esempio, uno stile con le regole precedenti di nome MyTextViewStyle sarà applicabile agli elementi in questo modo:

<TextView
    style="@style/MyTextViewStyle">
    android:text="@string/name" />

Il file deve trovarsi in res/values/ di tipo .xml e sarà definito tramite il tag <style> in cui saranno inserite le varie proprietà della classe tramite il tag <item>. Dall’esempio precedente il file di stile sarà così definito:

<?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="MyTextViewStyle" parent="@android:style/TextAppearance.Medium">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#FFFFFF</item>
        <item name="android:typeface">arial</item>
    </style>
    </resources>

L’attributo parent è opzionale e consente di specificare uno stile da cui ereditare le proprietà specificando l’id dello stile. Avendo definito uno stile in un file, come anticipato in precedenza possiamo applicarlo a più elementi, ad esempio invece di scrivere:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#FFFFFF"
    android:typeface="arial"
    android:text="@string/title" />
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#FFFFFF"
    android:typeface="arial"
    android:text="@string/message" />
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#FFFFFF"
    android:typeface="arial"
    android:text="@string/note" />

Possiamo utilizzare lo stile in questo modo:

<TextView
    style="@style/MyTextViewStyle"
    android:text="@string/title" />
<TextView
    style="@style/MyTextViewStyle"
    android:text="@string/message" />
<TextView
    style="@style/MyTextViewStyle"
    android:text="@string/note" />

In modo molto simile è possibile applicare un tema a tutta l’applicazione. Ad esempio:

<application android:theme="@style/MYTheme">
    ...
</application>

Per applicare un tema ad un’activity scriveremo:

<activity android:theme="@style/MYTheme">
    ...
</activity>

Android mette a disposizione alcuni temi che possono essere utilizzati nelle proprie applicazioni come Theme.Dialog e Theme.Translucent. Per maggiori informazioni vi rimando alla guida ufficiale di Google.

Indice Lezione PrecedenteLezione Successiva

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *