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?

Willy
źródło

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.

Paresh Mayani
źródło
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.

miłość na żywo
źródło
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)

jcw
źródło