一个应用程序中的多个主题
在 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
….)。