Android'de bir etkinliğe tema uygulansın mı?


86

Bir temayı tüm uygulamaya nasıl uygulayacağımı biliyorum, ancak temayı tek bir etkinliğe uygulamak için nereye gitmeliyim?

Yanıtlar:


158

Sen dahil ederek herhangi bir faaliyet için bir tema uygulayabilirsiniz android:themeiçini <activity>tezahür dosya içindeki.

Örneğin:

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

Ve temayı programlı olarak ayarlamak istiyorsanız, yöntem içinde setTheme()çağırmadan setContentView()ve super.onCreate()yöntem kullanmadan önce kullanın onCreate().


1
Temayı devre dışı bırakmaya ne dersiniz? tek bir aktivitede
Yousha Aleayoub

@Yousha Aleayoub: Başka bir tema oluşturmayı denediniz mi?
Yannick

Hayır, ama sadece temayı devre dışı bırakmak / kaldırmak ve basit hale getirmek istiyorum ... :)
Yousha Aleayoub

1
ve tools:context= ".YourAtivityName"kökte xml kullanımı
Faisal Naseer

34

Bunu Activity.java'da programlı olarak ayarlamak için:

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'de Uygulama kapsamını ayarlamak için (tüm etkinlikler):

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

Manifest.xml'de (tek etkinlik) Etkinlik kapsamını ayarlamak için:

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

Özel bir tema oluşturmak için, temayı themes.xml dosyasında bildirmeniz ve styles.xml dosyasında stilleri ayarlamanız gerekir.


1
Temayı devre dışı bırakmaya ne dersiniz? tek bir aktivitede
Yousha Aleayoub

2
Neden iki android:themeözellik eklediniz ?
Flame of udun

@Vineet Kaushik, android:theme="@android:style/Theme.Holo"Android yerleşik teması eklemek için kullanılan sözdizimidir. dosyanızda android:theme="@style/MyTheme"açıklanan özel bir tema eklemek için kullanılan sözdizimidir styles.xml. Gerçek AndroidManifest.xmldosyanızda, her bölüm için yalnızca birini veya diğerini kullanırsınız, ikisini birden kullanamazsınız.
Soren Stoutner

1
@Yousha Aleayoub, temayı devre dışı bırakmak için içinde boş bir tema oluşturun styles.xmlve ardından sözdizimini kullanın android:theme=@style/MyBlankTheme.
Soren Stoutner

Görünüşe göre manifest'e birden fazla özel tema koymak işe yaramıyor. Uygulama düzeyinde bir tema ve etkinlik düzeyinde ikinci bir tema eklerseniz, yalnızca uygulama kullanılır. Her aktivite için farklı "görünüme" sahip ancak iyi sonuç alamayan bir tema eklemeye çalıştım.
Peter

8

Aramadan önce setContentView()arayın setTheme(android.R.style...)ve istediğiniz temayla ... değiştirin (Tema, Tema, Tema_NoTitleBar, vb.).

Veya temanız özel bir temaysa, her şeyi değiştirin, böylece setTheme(yourThemesResouceId)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.