Zastosować motyw do działania w systemie Android?


86

Wiem, jak zastosować motyw do całej aplikacji, ale gdzie powinienem zastosować motyw tylko do pojedynczego działania?

Odpowiedzi:


158

Można zastosować motyw do każdej działalności, włączając android:themewnętrze <activity>wewnątrz pliku manifestu.

Na przykład:

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

A jeśli chcesz ustawić motyw programowo, użyj setTheme()przed wywołaniem setContentView()i super.onCreate()metody wewnątrz onCreate()metody.


1
A co z wyłączonym motywem? na jednej czynności
Yousha Aleayoub

@Yousha Aleayoub: czy próbowałeś po prostu ustawić inny motyw?
Yannick,

Nie, ale chcę tylko wyłączyć / usunąć motyw i uczynić go podstawowym ... :)
Yousha Aleayoub

1
oraz w działaniu xml użyj tools:context= ".YourAtivityName"w katalogu głównym
Faisal Naseer

34

Aby ustawić go programowo w 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);

Aby ustawić w zakresie aplikacji w pliku Manifest.xml (wszystkie działania):

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

Aby ustawić zakres działania w pliku Manifest.xml (pojedyncze działanie):

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

Aby zbudować własny motyw, będziesz musiał zadeklarować motyw w pliku themes.xml i ustawić style w pliku styles.xml.


1
A co z wyłączonym motywem? na jednej czynności
Yousha Aleayoub

2
Dlaczego dodałeś dwa android:themeatrybuty?
Płomień udun

@Vineet Kaushik, android:theme="@android:style/Theme.Holo"to składnia dodawania wbudowanego motywu Androida. android:theme="@style/MyTheme"to składnia dodawania motywu niestandardowego opisanego w styles.xmlpliku. W swoim rzeczywistym AndroidManifest.xmlpliku użyjesz tylko jednej lub drugiej dla każdej sekcji, a nie obu.
Soren Stoutner

1
@Yousha Aleayoub, aby wyłączyć motyw, utwórz pusty motyw w programie, styles.xmla następnie użyj składni android:theme=@style/MyBlankTheme.
Soren Stoutner

Wygląda na to, że umieszczenie więcej niż jednego niestandardowego motywu w manifeście nie działa. Jeśli dodasz motyw na poziomie aplikacji, a drugi na poziomie aktywności, zostanie użyty tylko motyw aplikacji. Próbowałem dodać jeden motyw do każdego ćwiczenia z innym „wyglądem”, ale bez dobrego rezultatu.
Peter

8

Zanim zadzwonisz setContentView(), zadzwoń setTheme(android.R.style...)i po prostu zastąp ... odpowiednim motywem (Theme, Theme_NoTitleBar itp.).

Lub jeśli Twój motyw jest motywem niestandardowym, zamień całość, aby uzyskać setTheme(yourThemesResouceId)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.