Suche…


Benutzerdefiniertes Design global verwenden

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>

Definieren Sie primäre, primäre dunkle und Akzentfarben

Sie können die Farbpalette Ihres Themas anpassen.

Framework- APIs verwenden

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>

Verwenden der Appcompat-Unterstützungsbibliothek (und 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>

Verwenden Sie ein benutzerdefiniertes Thema pro Aktivität

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-Farbe (API 21+)

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

Wellenfarbe (API 21+)

5,0

Die Welligkeitsanimation wird angezeigt, wenn der Benutzer auf anklickbare Ansichten drückt.

Sie können dieselbe Ripple-Farbe verwenden, die von Ihrer App verwendet wird, indem ?android:colorControlHighlight in Ihren Ansichten das ?android:colorControlHighlight . Sie können diese Farbe anpassen, indem Sie das Attribut android:colorControlHighlight in Ihrem android:colorControlHighlight ändern:

Diese Effektfarbe kann geändert werden:

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

Oder, wenn Sie ein Materialdesign verwenden:

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

Lichtstatusleiste (API 23+)

Dieses Attribut kann den Hintergrund der Statussymbole (oben auf dem Bildschirm) in Weiß ändern.

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

Transluzente Navigations- und Statusleisten (API 19+)

Die Navigationsleiste (am unteren Rand des Bildschirms) kann transparent sein. Hier ist der Weg, um es zu erreichen.

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

Die Statusleiste (oben auf dem Bildschirm) kann transparent gemacht werden, indem dieses Attribut auf den Stil angewendet wird:

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

Farbe der Navigationsleiste (API 21+)

5,0

Dieses Attribut wird verwendet, um die Navigationsleiste zu ändern (eine, die die Schaltfläche Zurück, Startseite zuletzt) ​​enthält. Normalerweise ist es schwarz, die Farbe kann jedoch geändert werden.

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

Thema Vererbung

Bei der Definition von Themen verwendet man normalerweise das vom System bereitgestellte Thema und ändert dann das Erscheinungsbild an seine eigene Anwendung. So wird beispielsweise das Theme.AppCompat vererbt:

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

Dieses Theme.AppCompat verfügt jetzt über alle Eigenschaften des Standarddesigns Theme.AppCompat , außer denjenigen, die wir explizit geändert haben.

Es gibt auch eine Abkürzung beim Erben, die normalerweise verwendet wird, wenn man von seinem eigenen Thema erbt:

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

Da hat es bereits AppTheme. Am Anfang wird der Name automatisch erben, ohne dass das parent Design definiert werden muss. Dies ist nützlich, wenn Sie bestimmte Stile für einen Teil (z. B. eine einzelne Aktivität) Ihrer App erstellen müssen.

Mehrere Themes in einer App

Wenn Sie mehr als ein Thema in Ihrer Android-Anwendung verwenden, können Sie jedem Thema eigene Farben hinzufügen.

OneTheme ZweiThemen

Zuerst müssen wir unsere Designs wie style.xml zu style.xml hinzufügen:

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

</style>

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

</style>
......

Oben sehen Sie OneTheme und TwoTheme .

Nun gehen Sie zu Ihrem AndroidManifest.xml und fügen Sie diese Zeile: android:theme="@style/OneTheme" auf Ihre Bewerbung Tag, wird dies das Standard - Theme machen OneTheme:

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

Erstellen Sie eine neue XML-Datei namens attrs.xml und fügen Sie diesen Code hinzu:

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

Gehen Sie zurück zu style.xml und fügen Sie diese Farben mit den Werten für jedes Thema hinzu:

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

Jetzt haben Sie benutzerdefinierte Farben für jedes Thema. Lassen Sie uns diese Farben in unseren Ansichten einfügen.

Fügen Sie der TextView- Farbe mit "? Attr /" die Farbe custom_blue hinzu:

Gehen Sie zu Ihrem imageView und fügen Sie diese Farbe hinzu:

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

Mow, wir können das Thema nur durch eine einzelne Zeile setTheme(R.style.TwoTheme); Diese Zeile muss vor der setContentView() -Methode in der onCreate() -Methode wie dieser Activity.java :

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


Ändern Sie das Thema für alle Aktivitäten gleichzeitig

Wenn Sie das Thema für alle Aktivitäten ändern möchten, müssen Sie eine neue Klasse mit dem Namen MyActivity erstellen, die die AppCompatActivity Klasse (oder Activity Klasse) erweitert und die Zeile setTheme(R.style.TwoTheme); hinzufügt setTheme(R.style.TwoTheme); zu onCreate () - Methode:

public class MyActivity extends AppCompatActivity {

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

Gehen Sie schließlich zu all Ihren Aktivitäten und fügen Sie alle dazu aus, die MyActivity- Basisklasse zu erweitern:

public class MainActivity extends MyActivity {
    ....
}

Um das Thema zu ändern, wechseln Sie einfach zu MyActivity und ändern Sie R.style.TwoTheme in Ihr Thema ( R.style.OneTheme , R.style.ThreeTheme ....).



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow