Android Applicare un tema AppCompat


Esempio

La libreria di supporto AppCompat fornisce temi per creare app con le specifiche di Material Design . Un tema con un genitore di Theme.AppCompat è necessario anche per un'attività per estendere AppCompatActivity .

Il primo passo è personalizzare la tavolozza dei colori del tuo tema per colorare automaticamente la tua app.
Nella tua app res/styles.xml puoi definire:

<!-- inherit from the AppCompat theme -->
<style name="AppTheme" parent="Theme.AppCompat">

    <!-- your app branding color for the app bar -->
    <item name="colorPrimary">#2196f3</item>
    
    <!-- darker variant for the status bar and contextual app bars -->
    <item name="colorPrimaryDark">#1976d2</item>

    <!-- theme UI controls like checkboxes and text fields -->
    <item name="colorAccent">#f44336</item>
</style>

Invece di Theme.AppCompat , che ha uno sfondo scuro, puoi anche utilizzare Theme.AppCompat.Light o Theme.AppCompat.Light.DarkActionBar .

Puoi personalizzare il tema con i tuoi colori. Buone scelte sono nella tabella dei colori delle specifiche di progettazione dei materiali e nella tavolozza dei materiali . I colori "500" sono buone scelte per il primario (blu 500 in questo esempio); scegli "700" della stessa tonalità per quella scura; e un'ombra da una tonalità diversa come il colore dell'accento. Il colore principale viene utilizzato per la barra degli strumenti dell'app e la relativa voce nella schermata panoramica (app recenti), la variante più scura per colorare la barra di stato e il colore per evidenziare alcuni controlli.

Dopo aver creato questo tema, applicalo alla tua app in AndroidManifest.xml e applica il tema a qualsiasi attività specifica. Ciò è utile per applicare un tema AppTheme.NoActionBar , che consente di implementare configurazioni di barre degli strumenti non predefinite.

<application android:theme="@style/AppTheme" 
    ...>
    <activity 
        android:name=".MainActivity"
        android:theme="@style/AppTheme" />
</application>

Puoi anche applicare temi alle singole visualizzazioni usando android:theme e un tema ThemeOverlay . Ad esempio con una Toolbar :

<android.support.v7.widget.Toolbar
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="?attr/colorPrimary"
  android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

o un Button :

<Button
    style="@style/Widget.AppCompat.Button.Colored"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@style/MyButtonTheme"/>

<!-- res/values/themes.xml -->
<style name="MyButtonTheme" parent="ThemeOverlay.AppCompat.Light">
    <item name="colorAccent">@color/my_color</item>
</style>