Appliquer un thème à une activité sous Android?


86

Je sais comment appliquer un thème à une application entière, mais où puis-je appliquer un thème à une seule activité?

Réponses:


158

Vous pouvez appliquer un thème à n'importe quelle activité en incluant android:themeà l' <activity>intérieur du fichier manifeste.

Par exemple:

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

Et si vous souhaitez définir le thème par programme, utilisez-le setTheme()avant d'appeler setContentView()et de super.onCreate()méthode à l'intérieur de la onCreate()méthode.


1
Qu'en est-il du thème de désactivation? sur une seule activité
Yousha Aleayoub

@Yousha Aleayoub: avez-vous simplement essayé de définir un autre thème?
Yannick

Non, mais je veux juste désactiver / supprimer le thème et le rendre basique ... :)
Yousha Aleayoub

1
et en activité xml utilisation tools:context= ".YourAtivityName"dans la racine
Faisal Naseer

34

Pour le définir par programme dans 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);

Pour définir la portée de l'application dans Manifest.xml (toutes les activités):

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

Pour définir la portée de l'activité dans Manifest.xml (activité unique):

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

Pour créer un thème personnalisé, vous devrez déclarer le thème dans le fichier themes.xml et définir les styles dans le fichier styles.xml.


1
Qu'en est-il du thème de désactivation? sur une seule activité
Yousha Aleayoub

2
Pourquoi avez-vous ajouté deux android:themeattributs?
Flame of udun

@Vineet Kaushik, android:theme="@android:style/Theme.Holo"est la syntaxe pour ajouter un thème intégré Android. android:theme="@style/MyTheme"est la syntaxe pour ajouter un thème personnalisé décrit dans votre styles.xmlfichier. Dans votre AndroidManifest.xmlfichier actuel , vous n'utiliseriez que l'un ou l'autre pour chaque section, pas les deux.
Soren Stoutner

1
@Yousha Aleayoub, pour désactiver le thème, créez un thème vide dans styles.xmlpuis utilisez la syntaxe android:theme=@style/MyBlankTheme.
Soren Stoutner

Il semble que mettre plus d'un thème personnalisé dans le manifeste ne fonctionne pas. Si vous ajoutez un thème au niveau de l'application et un second au niveau de l'activité, seul celui de l'application est utilisé. J'ai essayé d'ajouter un thème pour chaque activité avec un "look" différent mais sans bon résultat.
Peter le

8

Avant d'appeler setContentView(), appelez setTheme(android.R.style...)et remplacez simplement le ... par le thème de votre choix (Theme, Theme_NoTitleBar, etc.).

Ou si votre thème est un thème personnalisé, remplacez le tout pour obtenir setTheme(yourThemesResouceId)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.