Recherche…


Utiliser un thème personnalisé à l'échelle mondiale

Dans themes.xml:

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

Dans AndroidManifest.xml:

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

</application>

Définir les couleurs primaires, primaires et d'accentuation

Vous pouvez personnaliser la palette de couleurs de votre thème .

Utilisation des API de 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>

Utilisation de la bibliothèque de support Appcompat (et 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>

Utiliser un thème personnalisé par activité

Dans themes.xml:

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

Dans 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>

Couleur Overscroll (API 21+)

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

Couleur d'ondulation (API 21+)

5.0

L'animation d' ondulation est affichée lorsque l'utilisateur appuie sur des vues cliquables.

Vous pouvez utiliser la même couleur d’ondulation que celle utilisée par votre application pour attribuer le ?android:colorControlHighlight à vos vues. Vous pouvez personnaliser cette couleur en modifiant l'attribut android:colorControlHighlight dans votre thème:

Cette couleur d'effet peut être modifiée:

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

Ou, si vous utilisez un thème matériel:

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

Barre d'état de la lumière (API 23+)

Cet attribut peut changer l'arrière-plan des icônes de la barre d'état (en haut de l'écran) en blanc.

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

Barres de navigation et d'état translucides (API 19+)

La barre de navigation (en bas de l'écran) peut être transparente. Voici le moyen d'y parvenir.

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

La barre d'état (en haut de l'écran) peut être rendue transparente en appliquant cet attribut au style:

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

Couleur de la barre de navigation (API 21+)

5.0

Cet attribut est utilisé pour modifier la barre de navigation (une, qui contient le bouton Précédent, Accueil récent). Il est généralement noir, mais sa couleur peut être modifiée.

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

Héritage thématique

Lors de la définition des thèmes, on utilise généralement le thème fourni par le système, puis les modifications modifient l'apparence pour l'adapter à sa propre application. Par exemple, Theme.AppCompat comment le thème Theme.AppCompat est hérité:

<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>

Ce thème a maintenant toutes les propriétés du thème Theme.AppCompat standard, sauf celles que nous avons explicitement modifiées.

Il y a aussi un raccourci lors de l'héritage, généralement utilisé lorsque l'on hérite de son propre thème:

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

Depuis, il a déjà AppTheme. au début de son nom, il en hérite automatiquement, sans avoir à définir le thème parent . Ceci est utile lorsque vous devez créer des styles spécifiques pour une pièce (par exemple, une seule activité) de votre application.

Plusieurs thèmes dans une application

En utilisant plus d’un thème dans votre application Android, vous pouvez ajouter des couleurs personnalisées à chaque thème pour qu’elles se présentent comme suit:

OneTheme TwoTheme

Tout d'abord, nous devons ajouter nos thèmes à style.xml comme ceci:

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

</style>

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

</style>
......

Vous pouvez voir ci- dessus OneTheme et TwoTheme .

Maintenant, allez à votre AndroidManifest.xml et ajoutez cette ligne: android:theme="@style/OneTheme" à votre balise d' application , cela fera de OneTheme le thème par défaut:

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

Créez un nouveau fichier xml nommé attrs.xml et ajoutez ce code:

<?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) -->

Revenez à style.xml et ajoutez ces couleurs avec ses valeurs pour chaque thème:

<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>

Maintenant, vous avez des couleurs personnalisées pour chaque thème, ajoutons ces couleurs à nos vues.

Ajoutez la couleur custom_blue au TextView en utilisant "? Attr /":

Accédez à votre imageView et ajoutez cette couleur:

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

Mow, nous pouvons changer le thème par simple ligne setTheme(R.style.TwoTheme); cette ligne doit être avant setContentView() Procédé onCreate() méthode, comme celle - Activity.java :

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


changer de thème pour toutes les activités à la fois

Si nous voulons changer le thème pour toutes les activités, nous devons créer une nouvelle classe nommée MyActivity AppCompatActivity (ou Activity class) et ajouter line setTheme(R.style.TwoTheme); à la méthode onCreate () :

public class MyActivity extends AppCompatActivity {

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

Enfin, accédez à toutes vos activités, ajoutez toutes à la classe de base MyActivity :

public class MainActivity extends MyActivity {
    ....
}

Pour changer de thème, il suffit d'aller sur MyActivity et de modifier R.style.TwoTheme sur votre thème ( R.style.OneTheme , R.style.ThreeTheme ....).



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow