Menerapkan tema ke aktivitas di Android?

86

Saya tahu cara menerapkan tema ke seluruh aplikasi, tetapi ke mana saya akan pergi untuk menerapkan tema hanya ke satu aktivitas?

Willy
sumber

Jawaban:

158

Anda dapat menerapkan tema ke aktivitas apa pun dengan memasukkan android:themedi dalamnya<activity> dalam file manifes.

Sebagai contoh:

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

Dan jika Anda ingin mengatur tema secara programatik maka gunakan setTheme()sebelum memanggil setContentView()dan super.onCreate()metode di dalam onCreate()metode.

Paresh Mayani
sumber
1
Bagaimana dengan menonaktifkan tema? pada satu aktivitas
Yousha Aleayoub
@Yousha Aleayoub: apakah Anda mencoba menyetel tema lain?
Yannick
Tidak, tetapi saya hanya ingin menonaktifkan / menghapus tema dan menjadikannya dasar ... :)
Yousha Aleayoub
1
dan dalam aktivitas penggunaan xml tools:context= ".YourAtivityName"di root
Faisal Naseer
34

Untuk mengaturnya secara terprogram di 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);

Untuk menyetel dalam lingkup Aplikasi di Manifest.xml (semua aktivitas):

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

Untuk menyetel dalam lingkup Aktivitas di Manifest.xml (aktivitas tunggal):

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

Untuk membuat tema khusus, Anda harus mendeklarasikan tema dalam file themes.xml, dan menyetel gaya dalam file styles.xml.

cinta hidup
sumber
1
Bagaimana dengan menonaktifkan tema? pada satu aktivitas
Yousha Aleayoub
2
Mengapa Anda menambahkan dua android:themeatribut?
Nyala udun
@Vineet Kaushik, android:theme="@android:style/Theme.Holo"adalah sintaks untuk menambahkan tema bawaan Android. android:theme="@style/MyTheme"adalah sintaks untuk menambahkan tema khusus yang dijelaskan dalam styles.xmlfile Anda . Dalam AndroidManifest.xmlfile Anda yang sebenarnya, Anda hanya akan menggunakan satu atau yang lain untuk setiap bagian, tidak keduanya.
Soren Stoutner
1
@Yousha Aleayoub, untuk menonaktifkan tema, buat tema kosong styles.xmldan gunakan sintaks android:theme=@style/MyBlankTheme.
Soren Stoutner
Tampaknya menempatkan lebih dari satu tema khusus dalam manifes tidak berfungsi. Jika Anda menambahkan tema di tingkat aplikasi dan yang kedua di tingkat aktivitas, hanya aplikasi yang digunakan. Saya mencoba menambahkan satu tema untuk setiap kegiatan dengan "tampilan" yang berbeda tetapi tanpa hasil yang baik.
Peter
8

Sebelum Anda menelepon setContentView(), panggil setTheme(android.R.style...)dan ganti saja ... dengan tema yang Anda inginkan (Theme, Theme_NoTitleBar, dll.).

Atau jika tema Anda adalah tema khusus, maka gantilah semuanya, sehingga Anda mendapatkannya setTheme(yourThemesResouceId)

jcw
sumber