一個應用程式中的多個主題

在 Android 應用程式中使用多個主題,你可以為每個主題新增自定義顏色,如下所示:

OneTheme TwoTheme

首先,我們必須將我們的主題新增到 style.xml,如下所示:

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

</style>

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

</style>
......

在上面你可以看到 OneThemeTwoTheme

現在,轉到你的 AndroidManifest.xml 並將這一行:android:theme="@style/OneTheme" 新增到你的應用程式標籤中,這將使 OneTheme 成為預設主題:

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

建立名為 attrs.xml 的新 xml 檔案並新增以下程式碼:

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

返回 style.xml 並新增這些顏色及其每個主題的值:

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

現在你有每個主題的自定義顏色,讓我們將這些顏色新增到我們的檢視中。

使用“?attr /” 將 custom_blue 顏色新增到 TextView:

轉到你的 imageView 並新增此顏色:

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

我們可以通過單行 setTheme(R.style.TwoTheme); 改變主題這條線必須在 onCreate() 方法中的 setContentView() 方法之前,就像這個 Activity.java

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

一次更改所有活動的主題

如果我們想要更改所有活動的主題,我們必須建立名為 MyActivity extends AppCompatActivity class(或 Activity 類)的新類,並將 onhuan12 行新增到 onCreate() 方法:

public class MyActivity extends AppCompatActivity {

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

最後,轉到所有活動,新增 make all all 擴充套件 MyActivity 基類:

public class MainActivity extends MyActivity {
    ....
}

要更改主題,只需轉到 MyActivity 並將 R.style.TwoTheme 更改為你的主題(R.style.OneThemeR.style.ThreeTheme ….)。