Applicare un tema a un'attività in Android?


86

So come applicare un tema a un'intera applicazione, ma dove dovrei andare per applicare un tema a una singola attività?

Risposte:


158

Puoi applicare un tema a qualsiasi attività includendolo android:themeall'interno del <activity>file manifest.

Per esempio:

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

E se vuoi impostare il tema in modo programmatico, usa setTheme()prima di chiamare setContentView()e super.onCreate()metodo all'interno del onCreate()metodo.


1
Che ne dici di disattivare il tema? su una singola attività
Yousha Aleayoub,

@ Yousha Aleayoub: hai provato a impostare un altro tema?
Yannick

No, ma voglio solo disabilitare / rimuovere il tema e renderlo di base ... :)
Yousha Aleayoub

1
e nell'attività xml utilizzare tools:context= ".YourAtivityName"nella radice
Faisal Naseer

34

Per impostarlo a livello di codice 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);

Per impostare nell'ambito dell'applicazione in Manifest.xml (tutte le attività):

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

Per impostare in ambito attività in Manifest.xml (singola attività):

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

Per creare un tema personalizzato, dovrai dichiarare il tema nel file themes.xml e impostare gli stili nel file styles.xml.


1
Che ne dici di disattivare il tema? su una singola attività
Yousha Aleayoub,

2
Perché hai aggiunto due android:themeattributi?
Fiamma di udun

@Vineet Kaushik, android:theme="@android:style/Theme.Holo"è la sintassi per l'aggiunta di un tema integrato Android. android:theme="@style/MyTheme"è la sintassi per aggiungere un tema personalizzato descritto nel styles.xmlfile. Nel tuo AndroidManifest.xmlfile effettivo useresti solo l'uno o l'altro per ogni sezione, non entrambi.
Soren Stoutner

1
@Yousha Aleayoub, per disabilitare il tema, crea un tema vuoto styles.xmle poi usa la sintassi android:theme=@style/MyBlankTheme.
Soren Stoutner

Sembra che l'inserimento di più di un tema personalizzato nel manifest non funzioni. Se aggiungi un tema a livello di applicazione e un secondo a livello di attività, viene utilizzato solo quello dell'applicazione. Ho provato ad aggiungere un tema per ogni attività con un "look" diverso ma senza un buon risultato.
Peter,

8

Prima di chiamare setContentView(), chiama setTheme(android.R.style...)e sostituisci semplicemente ... con il tema che desideri (Theme, Theme_NoTitleBar, ecc.).

Oppure, se il tuo tema è un tema personalizzato, sostituisci l'intera cosa, così ottieni setTheme(yourThemesResouceId)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.