Sök…


Använd anpassat tema globalt

I teman.xml:

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

I AndroidManifest.xml:

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

</application>

Definiera primära, primära mörka och accentfärger

Du kan anpassa ditt temas färgpalett .

Använda ram- API: er

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>

Använda Appcompat-supportbiblioteket (och 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>

Använd anpassat tema per aktivitet

I teman.xml:

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

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

Överskridningsfärg (API 21+)

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

Ripple Color (API 21+)

5,0

Rippelanimeringen visas när användaren trycker på klickbara vyer.

Du kan använda samma krusningsfärg som din app tilldelar ?android:colorControlHighlight i dina vyer. Du kan anpassa denna färg genom att ändra android:colorControlHighlight attributet i ditt tema:

Denna effektfärg kan ändras:

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

Eller om du använder ett materialtema:

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

Ljusstatusfält (API 23+)

Detta attribut kan ändra bakgrunden på ikonerna för statusfältet (längst upp på skärmen) till vitt.

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

Genomskinliga navigerings- och statusfält (API 19+)

Navigeringsfältet (längst ner på skärmen) kan vara transparent. Här är sättet att uppnå det.

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

Statusfältet (överst på skärmen) kan göras öppet genom att tillämpa detta attribut på stilen:

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

Detta attribut används för att ändra navigeringsfältet (ett, som innehåller knappen Tillbaka, Hem senaste). Vanligtvis är den svart, men färgen kan ändras.

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

Teman arv

När man definierar teman använder man vanligtvis det tema som tillhandahålls av systemet och ändrar sedan utseendet så att det passar sin egen applikation. Till exempel är detta hur Theme.AppCompat temat ärvs:

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

Detta tema har nu alla egenskaper standard Theme.AppCompat tema, utom de som vi uttryckligen ändrats.

Det finns också en genväg när man ärver, vanligtvis används när man ärver från sitt eget tema:

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

Eftersom det redan har AppTheme. i början av namnet ärver det automatiskt utan att behöva definiera parent temat. Detta är användbart när du behöver skapa specifika stilar för en del (till exempel en enda aktivitet) i din app.

Flera teman i en app

Med mer än ett tema i din Android-applikation kan du lägga till anpassade färger till varje tema för att vara så här:

OneTheme TwoTheme

Först måste vi lägga till våra teman till style.xml så här:

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

</style>

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

</style>
......

Ovanför kan du se OneTheme och TwoTheme .

Gå nu till din AndroidManifest.xml och lägg till den här raden: android:theme="@style/OneTheme" till din applikationstagg , detta kommer att göra OneTheme till standardtema:

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

Skapa en ny xml-fil med namnet attrs.xml och lägg till den här koden:

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

Gå tillbaka till style.xml och lägg till dessa färger med dess värden för varje 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>

Nu har du anpassade färger för varje tema, låt oss lägga till dessa färger i våra vyer.

Lägg till anpassad_blåfärg till TextView genom att använda "? Attr /":

Gå till din imageView och lägg till den här färgen:

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

Klipp vi kan ändra temat bara med enstaka rad setTheme(R.style.TwoTheme); den här raden måste vara före setContentView() metoden onCreate() , som den här Activity.java :

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


ändra tema för alla aktiviteter på en gång

Om vi vill ändra temat för alla aktiviteter måste vi skapa en ny klass med namnet MyActivity utökar AppCompatActivity klassen (eller Activity ) och lägga till setTheme(R.style.TwoTheme); till onCreate () -metoden:

public class MyActivity extends AppCompatActivity {

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

Slutligen, gå till alla dina aktiviteter och lägg dem alla utöka MyActivity- basklassen:

public class MainActivity extends MyActivity {
    ....
}

För att ändra temat, gå bara till MyActivity och ändra R.style.TwoTheme till ditt tema ( R.style.OneTheme , R.style.ThreeTheme ....).



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow