Застосувати тему до діяльності в 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: ти намагався просто встановити іншу тему?
Yannick

Ні, але я просто хочу відключити / видалити тему та зробити її базовою ... :)
Yousha Aleayoub

1
і в діяльності xml використання tools:context= ".YourAtivityName"в корені
Faisal Naseer

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атрибути?
Полум'я удуна

@Vineet Kaushik android:theme="@android:style/Theme.Holo"- це синтаксис для додавання вбудованої теми Android. android:theme="@style/MyTheme"- це синтаксис для додавання власної теми, описаної у вашому styles.xmlфайлі. У вашому фактичному AndroidManifest.xmlфайлі ви б використовували лише той чи інший для кожного розділу, а не обидва.
Soren Stoutner

1
@Yousha Aleayoub, щоб вимкнути тему, створіть пусту тему, styles.xmlа потім використовуйте синтаксис android:theme=@style/MyBlankTheme.
Soren Stoutner

Здається, розміщення декількох спеціальних тем у маніфесті не працює. Якщо ви додаєте тему на рівні програми, а другу - на рівні активності, використовується лише програма. Я намагався додати одну тему для кожного заходу з різним "виглядом", але без хорошого результату.
Пітер

8

Перш ніж зателефонувати setContentView(), зателефонуйте setTheme(android.R.style...)і просто замініть ... на тему, яку ви хочете (Theme, Theme_NoTitleBar тощо).

Або якщо ваша тема є власною темою, то замініть всю річ, і ви отримаєте setTheme(yourThemesResouceId)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.