Ricerca…


Usa il tema personalizzato a livello globale

In themes.xml:

<style name="AppTheme" parent="Theme.AppCompat">
    <!-- Theme attributes here -->
</style>

In AndroidManifest.xml:

<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    
    <!-- Activity declarations here -->

</application>

Definisci colori primari, scuri primari e accenti

È possibile personalizzare la tavolozza dei colori del tema .

Utilizzo delle API framework

5.0
<style name="AppTheme" parent="Theme.Material">
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
    <item name="android:colorAccent">@color/accent</item>
</style>

Utilizzo della libreria di supporto Appcompat (e AppCompatActivity )

2.1.x
<style name="AppTheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
</style>

Usa tema personalizzato per attività

In themes.xml:

<style name="MyActivityTheme" parent="Theme.AppCompat">
    <!-- Theme attributes here -->
</style>

In AndroidManifest.xml:

<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat">
    
    <activity
        android:name=".MyActivity"
        android:theme="@style/MyActivityTheme" />

</application>

Overscroll Color (API 21+)

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:colorEdgeEffect">@color/my_color</item>
</style>

Ripple Color (API 21+)

5.0

L'animazione ripple viene mostrata quando l'utente preme viste cliccabili.

Puoi utilizzare lo stesso colore di ripple utilizzato dalla tua app che assegna il ?android:colorControlHighlight nelle tue visualizzazioni. Puoi personalizzare questo colore modificando l'attributo android:colorControlHighlight nel tuo tema:

Questo colore dell'effetto può essere cambiato:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:colorControlHighlight">@color/my_color</item>
</style>

Oppure, se stai usando un tema materiale:

<style name="AppTheme" parent="android:Theme.Material.Light">
    <item name="android:colorControlHighlight">@color/your_custom_color</item>
</style>

Light Status Bar (API 23+)

Questo attributo può cambiare lo sfondo delle icone della barra di stato (nella parte superiore dello schermo) in bianco.

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowLightStatusBar">true</item>
</style>

La barra di navigazione (nella parte inferiore dello schermo) può essere trasparente. Ecco il modo per raggiungerlo.

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowTranslucentNavigation">true</item>
</style>

La barra di stato (in alto sullo schermo) può essere resa trasparente, applicando questo attributo allo stile:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowTranslucentStatus">true</item>
</style>

Colore barra di navigazione (API 21+)

5.0

Questo attributo viene utilizzato per modificare la barra di navigazione (una, che contiene il pulsante Indietro, Home recenti). Di solito è nero, tuttavia è possibile cambiare il colore.

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:navigationBarColor">@color/my_color</item>
</style>

Eredità tematica

Quando si definiscono temi, in genere si utilizza il tema fornito dal sistema, quindi le modifiche modificano l'aspetto per adattarlo alla propria applicazione. Ad esempio, questo è il modo in cui il tema Theme.AppCompat è ereditato:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Questo tema ora ha tutte le proprietà del tema Theme.AppCompat standard, ad eccezione di quelli che abbiamo modificato in modo esplicito.

C'è anche una scorciatoia quando si eredita, di solito usata quando si eredita dal proprio tema:

<style name="AppTheme.Red">
    <item name="colorAccent">@color/red</item>
</style>

Dal momento che ha già AppTheme. all'inizio del suo nome, lo eredita automaticamente, senza dover definire il tema parent . Ciò è utile quando devi creare stili specifici per una parte (ad esempio, una singola attività) della tua app.

Temi multipli in un'unica app

Utilizzando più di un tema nella tua applicazione Android, puoi aggiungere colori personalizzati a ogni tema, per essere così:

OneTheme TwoTheme

Innanzitutto, dobbiamo aggiungere i nostri temi a style.xml questo modo:

<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">

</style>

<!--  -->
<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >

</style>
......

Sopra puoi vedere OneTheme e TwoTheme .

Ora vai sul tuo AndroidManifest.xml e aggiungi questa linea: android:theme="@style/OneTheme" al tag dell'applicazione , questo renderà OneTheme il tema predefinito:

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

Crea un nuovo file xml chiamato attrs.xml e aggiungi questo codice:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="custom_red" format="color" />
    <attr name="custom_blue" format="color" />
    <attr name="custom_green" format="color" />
</resources>
<!-- add all colors you need (just color's name) -->

Torna a style.xml e aggiungi questi colori con i relativi valori per ciascun tema:

<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="custom_red">#8b030c</item>
    <item name="custom_blue">#0f1b8b</item>
    <item name="custom_green">#1c7806</item>
</style>

<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >
    <item name="custom_red">#ff606b</item>
    <item name="custom_blue">#99cfff</item>
    <item name="custom_green">#62e642</item>
</style>

Ora hai colori personalizzati per ogni tema, aggiungiamo questi colori alle nostre visualizzazioni.

Aggiungi custom_blue color a TextView usando "? Attr /":

Vai alla tua imageView e aggiungi questo colore:

<TextView>
    android:id="@+id/txte_view"
    android:textColor="?attr/custom_blue" />

Mow possiamo cambiare il tema solo con la singola riga setTheme(R.style.TwoTheme); questa linea deve essere prima del metodo setContentView() nel metodo onCreate() , come questo Activity.java :

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTheme(R.style.TwoTheme);
    setContentView(R.layout.main_activity);
    ....
}


cambia tema per tutte le attività contemporaneamente

Se vogliamo cambiare il tema per tutte le attività, dobbiamo creare una nuova classe denominata MyActivity estende la classe AppCompatActivity (o la classe Activity ) e aggiunge line setTheme(R.style.TwoTheme); al metodo onCreate () :

public class MyActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (new MySettings(this).isDarkTheme())
            setTheme(R.style.TwoTheme);
    }
}

Infine, vai a tutte le tue attività aggiungi fai in modo che tutti estendano la classe base MyActivity :

public class MainActivity extends MyActivity {
    ....
}

Per cambiare il tema, vai su MyActivity e modifica R.style.TwoTheme sul tema ( R.style.OneTheme , R.style.ThreeTheme ....).



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow