Szukaj…


Użyj motywu niestandardowego globalnie

W themes.xml:

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

W AndroidManifest.xml:

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

</application>

Zdefiniuj kolory podstawowe, podstawowe ciemne i akcentujące

Możesz dostosować paletę kolorów motywu .

Korzystanie z interfejsów API platformy

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>

Korzystanie z biblioteki obsługi Appcompat (i 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>

Użyj niestandardowego motywu na działanie

W themes.xml:

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

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

Kolor marszczenia (API 21+)

5.0

Animacja tętnienia jest wyświetlana, gdy użytkownik naciśnie klikalne widoki.

Możesz użyć tego samego koloru tętnienia, co aplikacja przypisując ?android:colorControlHighlight w swoich widokach. Możesz dostosować ten kolor, zmieniając atrybut android:colorControlHighlight w swoim motywie:

Ten kolor efektu można zmienić:

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

Lub, jeśli używasz motywu materiałowego:

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

Pasek stanu światła (API 23+)

Ten atrybut może zmienić tło ikon paska stanu (u góry ekranu) na biały.

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

Przezroczysta nawigacja i paski stanu (API 19+)

Pasek nawigacyjny (na dole ekranu) może być przezroczysty. Oto sposób na osiągnięcie tego.

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

Pasek stanu (u góry ekranu) można ustawić jako przezroczysty, stosując ten atrybut do stylu:

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

Kolor paska nawigacji (API 21+)

5.0

Ten atrybut służy do zmiany paska nawigacji (jeden zawierający przycisk Wstecz, Strona główna Ostatnie). Zwykle jest czarny, ale jego kolor można zmienić.

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

Dziedziczenie motywu

Podczas definiowania motywów zwykle używa się motywu dostarczonego przez system, a następnie zmiany modyfikują wygląd, aby pasował do jego własnej aplikacji. Na przykład w ten sposób dziedziczony jest motyw Theme.AppCompat :

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

Ten motyw ma teraz wszystkie właściwości standardowego motywu Theme.AppCompat , z wyjątkiem tych, które wyraźnie zmieniliśmy.

Istnieje również skrót podczas dziedziczenia, zwykle używany, gdy dziedziczy się z własnego motywu:

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

Ponieważ ma już AppTheme. na początku nazwy dziedziczy ją automatycznie, bez potrzeby definiowania motywu parent . Jest to przydatne, gdy trzeba utworzyć określone style dla części (na przykład pojedynczego działania) aplikacji.

Wiele motywów w jednej aplikacji

Używając więcej niż jednego motywu w aplikacji na Androida, możesz dodać niestandardowe kolory do każdego motywu, aby wyglądać tak:

OneTheme TwoTheme

Najpierw musimy dodać nasze motywy do style.xml następujący sposób:

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

</style>

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

</style>
......

Powyżej widać OneTheme i TwoTheme .

Teraz przejdź do AndroidManifest.xml i dodaj ten wiersz: android:theme="@style/OneTheme" do tagu aplikacji , dzięki temu OneTheme będzie domyślnym motywem:

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

Utwórz nowy plik xml o nazwie attrs.xml i dodaj ten kod:

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

Wróć do style.xml i dodaj te kolory wraz z wartościami dla każdego motywu:

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

Teraz masz niestandardowe kolory dla każdego motywu, dodajmy ten kolor do naszych widoków.

Dodaj kolor custom_blue do TextView za pomocą „? Attr /”:

Przejdź do obrazu Wyświetl i dodaj ten kolor:

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

Mow, możemy zmienić motyw tylko za pomocą jednego wiersza setTheme(R.style.TwoTheme); ten wiersz musi znajdować się przed setContentView() metodzie onCreate() , podobnie jak ten Activity.java :

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


zmień motyw wszystkich działań jednocześnie

Jeśli chcemy zmienić motyw dla wszystkich działań, musimy utworzyć nową klasę o nazwie MyActivity rozszerza klasę AppCompatActivity (lub klasę Activity ) i dodać setTheme(R.style.TwoTheme); Metoda onCreate () :

public class MyActivity extends AppCompatActivity {

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

Na koniec przejdź do wszystkich swoich działań i dodaj, aby rozszerzyły klasę bazową MyActivity :

public class MainActivity extends MyActivity {
    ....
}

Aby zmienić motyw, przejdź do MyActivity i zmień R.style.TwoTheme na swój motyw ( R.style.OneTheme , R.style.ThreeTheme ....).



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow