Ein Thema auf eine Aktivität in Android anwenden?

85

Ich weiß, wie man ein Thema auf eine ganze Anwendung anwendet, aber wohin würde ich gehen, um ein Thema nur auf eine einzelne Aktivität anzuwenden?

Willy
quelle

Antworten:

158

Sie können , indem Sie ein Thema auf jede Aktivität gelten android:themeinnerhalb <activity>innerhalb Manifest - Datei.

Beispielsweise:

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

Wenn Sie das Thema programmgesteuert festlegen möchten, verwenden Sie es setTheme()vor dem Aufruf setContentView()und der super.onCreate()Methode innerhalb der onCreate()Methode.

Paresh Mayani
quelle
1
Was ist mit Thema deaktivieren? auf eine einzelne Aktivität
Yousha Aleayoub
@ Yousha Aleayoub: Hast du versucht, nur ein anderes Thema zu setzen?
Yannick
Nein, aber ich möchte nur das Thema deaktivieren / entfernen und es einfach machen ... :)
Yousha Aleayoub
1
und in Aktivität xml tools:context= ".YourAtivityName"in der Wurzel verwenden
Faisal Naseer
33

So programmieren Sie es programmgesteuert 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);

So legen Sie den Anwendungsbereich in Manifest.xml fest (alle Aktivitäten):

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

So legen Sie den Aktivitätsbereich in Manifest.xml fest (einzelne Aktivität):

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

Um ein benutzerdefiniertes Thema zu erstellen, müssen Sie das Thema in der Datei theme.xml deklarieren und Stile in der Datei styles.xml festlegen.

Live-Liebe
quelle
1
Was ist mit Thema deaktivieren? auf eine einzelne Aktivität
Yousha Aleayoub
2
Warum haben Sie zwei android:themeAttribute hinzugefügt ?
Flamme von Udun
@Vineet Kaushik android:theme="@android:style/Theme.Holo"ist die Syntax zum Hinzufügen eines integrierten Android-Themas. android:theme="@style/MyTheme"ist die Syntax zum Hinzufügen eines benutzerdefinierten Themas, das in Ihrer styles.xmlDatei beschrieben ist. In Ihrer eigentlichen AndroidManifest.xmlDatei würden Sie nur den einen oder anderen für jeden Abschnitt verwenden, nicht beide.
Soren Stoutner
1
@Yousha Aleayoub, um das Thema zu deaktivieren, erstellen Sie ein leeres Thema in styles.xmlund verwenden Sie dann die Syntax android:theme=@style/MyBlankTheme.
Soren Stoutner
Es scheint, dass das Einfügen von mehr als einem benutzerdefinierten Thema in das Manifest nicht funktioniert. Wenn Sie ein Thema auf Anwendungsebene und ein zweites auf Aktivitätsebene hinzufügen, wird nur das Anwendungsthema verwendet. Ich habe versucht, für jede Aktivität ein Thema mit einem anderen "Aussehen" hinzuzufügen, aber ohne gutes Ergebnis.
Peter
8

Bevor Sie anrufen setContentView(), rufen Sie an setTheme(android.R.style...)und ersetzen Sie einfach das ... durch das gewünschte Thema (Theme, Theme_NoTitleBar usw.).

Oder wenn Ihr Thema ein benutzerdefiniertes Thema ist, ersetzen Sie das gesamte Objekt, damit Sie erhalten setTheme(yourThemesResouceId)

jcw
quelle