web-dev-qa-db-fra.com

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

Je sais comment appliquer un thème à une application complète, mais où irais-je pour appliquer un thème à une seule activité?

71
Willy

Vous pouvez appliquer un thème à n'importe quelle activité en incluant Android:theme Dans <activity> Dans le fichier manifeste.

Par exemple:

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

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

141
Paresh Mayani

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 le champ d'application dans le fichier 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 devez le déclarer dans le fichier themes.xml et définir les styles dans le fichier styles.xml.

30
live-love

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, afin que vous obteniez setTheme(yourThemesResouceId)

8
jcw