一個應用程式中的多個主題
在 Android 應用程式中使用多個主題,你可以為每個主題新增自定義顏色,如下所示:
首先,我們必須將我們的主題新增到 style.xml
,如下所示:
<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
<!-- -->
<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >
</style>
......
在上面你可以看到 OneTheme 和 TwoTheme 。
現在,轉到你的 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.OneTheme
,R.style.ThreeTheme
….)。