Apply a theme to an activity in Android?
Asked Answered
G

3

96

I know how to apply a theme to a whole application, but where would I go to apply a theme to just a single activity?

Gallegos answered 1/10, 2013 at 20:20 Comment(0)
T
174

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.

Tamanaha answered 1/10, 2013 at 20:25 Comment(4)
What about disable theme? on a single activityErotogenic
@Yousha Aleayoub: did you try just setting another theme?Progressist
No, but i just want to disable/remove the theme and make it basic... :)Erotogenic
and in activity xml use tools:context= ".YourAtivityName" in the rootLimewater
H
37

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.

Hopfinger answered 23/10, 2014 at 16:46 Comment(5)
What about disable theme? on a single activityErotogenic
Why have you added two android:theme attributes?Nano
@Vineet Kaushik, android:theme="@android:style/Theme.Holo" is the syntax for adding an Android built-in theme. android:theme="@style/MyTheme" is the syntax for adding a custom theme described in your styles.xml file. In your actual AndroidManifest.xml file you would only use one or the other for each section, not both.Hedwighedwiga
@Yousha Aleayoub, to disable the theme, create a blank theme in styles.xml and then use the syntax android:theme=@style/MyBlankTheme.Hedwighedwiga
It seems putting more than one custom theme in the manifest don't work. If you add a theme at application level and a second at activity level, only the application one is used. I tried to add one theme for each activity with different "look" but without good result.Magnetohydrodynamics
I
8

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)

Inimical answered 1/10, 2013 at 20:21 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.