Zoeken…


Gebruik aangepast thema wereldwijd

In thema.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>

Definieer primaire, primaire donkere en accentkleuren

U kunt het kleurenpalet van uw thema aanpassen.

Framework- API's gebruiken

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>

Gebruik van de Appcompat-ondersteuningsbibliotheek (en 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>

Gebruik aangepast thema per activiteit

In thema.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

De rimpelanimatie wordt weergegeven wanneer de gebruiker op klikbare weergaven drukt.

U kunt in uw weergaven ?android:colorControlHighlight gebruiken die door uw app wordt gebruikt door de ?android:colorControlHighlight toe te wijzen. Je kunt deze kleur aanpassen door het kenmerk android:colorControlHighlight in je thema te wijzigen:

Deze effectkleur kan worden gewijzigd:

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

Of, als u een Materieel Thema gebruikt:

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

Lichtstatusbalk (API 23+)

Dit kenmerk kan de achtergrond van de statusbalkpictogrammen (boven aan het scherm) in wit veranderen.

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

Doorzichtige navigatie- en statusbalken (API 19+)

De navigatiebalk (onderaan het scherm) kan transparant zijn. Hier is de manier om het te bereiken.

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

De statusbalk (boven aan het scherm) kan transparant worden gemaakt door dit kenmerk toe te passen op de stijl:

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

Dit kenmerk wordt gebruikt om de navigatiebalk te wijzigen (een die de knop Terug, Home Recent bevat). Meestal is het zwart, maar de kleur kan worden gewijzigd.

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

Thema-erfenis

Bij het definiëren van thema's gebruikt men meestal het thema dat door het systeem wordt geboden, en vervolgens wordt het uiterlijk aangepast aan zijn eigen toepassing. Dit is bijvoorbeeld hoe het thema Theme.AppCompat wordt overgenomen:

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

Dit thema heeft nu alle eigenschappen van het standaardthema Theme.AppCompat , behalve degene die we expliciet hebben gewijzigd.

Er is ook een snelkoppeling bij het erven, meestal gebruikt wanneer iemand erft van zijn eigen thema:

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

Omdat het al AppTheme. aan het begin van de naam neemt het het automatisch over, zonder dat het parent thema hoeft te worden gedefinieerd. Dit is handig wanneer u specifieke stijlen voor een onderdeel (bijvoorbeeld een enkele activiteit) van uw app moet maken.

Meerdere thema's in één app

Met behulp van meer dan één thema in uw Android-applicatie, kunt u aangepaste kleuren toevoegen aan elk thema, als volgt:

OneTheme TwoTheme

Eerst moeten we onze thema's als volgt aan style.xml toevoegen:

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

</style>

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

</style>
......

Hierboven zie je OneTheme en TwoTheme .

Ga nu naar je AndroidManifest.xml en voeg deze regel: android:theme="@style/OneTheme" aan je applicatie- tag, dit zal OneTheme het standaardthema maken:

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

Maak een nieuw xml-bestand met de naam attrs.xml en voeg deze code toe:

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

Ga terug naar style.xml en voeg deze kleuren toe met de waarden voor elk thema:

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

Nu hebben we aangepaste kleuren voor elk thema, laten we deze kleur toevoegen aan onze weergaven.

Voeg custom_blue kleur toe aan de TextView met behulp van "? Attr /":

Ga naar je afbeelding Bekijk en voeg deze kleur toe:

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

Mow we kunnen het thema alleen veranderen door een enkele regel setTheme(R.style.TwoTheme); Deze regel moet vóór setContentView() methode onCreate() methode, zoals deze Activity.java :

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


verander het thema voor alle activiteiten tegelijk

Als we het thema voor alle activiteiten willen wijzigen, moeten we een nieuwe klasse maken met de naam MyActivity breidt de AppCompatActivity klasse (of Activity ) uit en voegt setTheme(R.style.TwoTheme); naar de methode onCreate () :

public class MyActivity extends AppCompatActivity {

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

Ga ten slotte naar al uw activiteiten toevoegen en zorg dat ze allemaal de MyActivity- basisklasse uitbreiden:

public class MainActivity extends MyActivity {
    ....
}

Om het thema te veranderen, ga je gewoon naar MyActivity en verander R.style.TwoTheme in je thema ( R.style.OneTheme , R.style.ThreeTheme ....).



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow