Применить тему к действию в Android?


86

Я знаю, как применить тему ко всему приложению, но куда мне пойти, чтобы применить тему только к одному действию?

Ответы:


158

Вы можете применить тему к любому действию, включив ее android:themeвнутрь <activity>файла манифеста.

Например:

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

И если вы хотите установить тему программно, используйте setTheme()перед вызовом setContentView()и super.onCreate()метод внутри onCreate()метода.


1
А как насчет отключения темы? на одном мероприятии
Юша Алеайуб

@Yousha Aleayoub: ты пробовал просто установить другую тему?
Янник

Нет, но я просто хочу отключить / удалить тему и сделать ее базовой ... :)
Юша Алеайуб

1
и в tools:context= ".YourAtivityName"
Activity

34

Чтобы установить его программно в 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);

Чтобы установить в области приложения в Manifest.xml (все действия):

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

Чтобы установить в области действия в Manifest.xml (одно действие):

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

Чтобы создать собственную тему, вам нужно будет объявить тему в файле themes.xml и установить стили в файле styles.xml.


1
А как насчет отключения темы? на одном мероприятии
Юша Алеайуб

2
Почему вы добавили два android:themeатрибута?
Flame of udun

@Vineet Kaushik android:theme="@android:style/Theme.Holo"- это синтаксис для добавления встроенной темы Android. android:theme="@style/MyTheme"- это синтаксис для добавления настраиваемой темы, описанной в вашем styles.xmlфайле. В вашем фактическом AndroidManifest.xmlфайле вы должны использовать только один или другой для каждого раздела, а не оба.
Сорен Стаутнер 09

1
@Yousha Aleayoub, чтобы отключить тему, создайте пустую тему styles.xmlи затем используйте синтаксис android:theme=@style/MyBlankTheme.
Сорен Стаутнер 09

Кажется, что размещение более одной настраиваемой темы в манифесте не работает. Если вы добавляете тему на уровне приложения, а вторую - на уровне активности, используется только тема приложения. Я пытался добавить одну тему для каждого действия с разным «внешним видом», но безуспешно.
Питер

8

Перед тем как позвонить setContentView(), позвоните setTheme(android.R.style...)и просто замените ... на ту тему, которая вам нужна (Theme, Theme_NoTitleBar и т. Д.).

Или, если ваша тема является настраиваемой темой, замените ее целиком, чтобы получить setTheme(yourThemesResouceId)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.