在 Android 中为活动应用主题?

我知道如何将一个主题应用于整个应用程序,但是我应该去哪里将一个主题应用于单个活动呢?

125021 次浏览

Before you call setContentView(), call setTheme(android.R.style...) and just replace the ... with the theme that you want(Theme, Theme_NoTitleBar, etc.).

Or if your theme is a custom theme, then replace the entire thing, so you get setTheme(yourThemesResouceId)

You can apply a theme to any activity by including android:theme inside <activity> inside manifest file.

For example:

  1. <activity android:theme="@android:style/Theme.Dialog">
  2. <activity android:theme="@style/CustomTheme">

And if you want to set theme programatically then use setTheme() before calling setContentView() and super.onCreate() method inside onCreate() method.

To set it programmatically in Activity.java:

public void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);


setTheme(R.style.MyTheme); // (for Custom theme)
setTheme(android.R.style.Theme_Holo); // (for Android Built In Theme)


this.setContentView(R.layout.myactivity);

To set in Application scope in Manifest.xml (all activities):

 <application
android:theme="@android:style/Theme.Holo"
android:theme="@style/MyTheme">

To set in Activity scope in Manifest.xml (single activity):

  <activity
android:theme="@android:style/Theme.Holo"
android:theme="@style/MyTheme">

To build a custom theme, you will have to declare theme in themes.xml file, and set styles in styles.xml file.