Wiem, jak zastosować motyw do całej aplikacji, ale gdzie powinienem zastosować motyw tylko do pojedynczego działania?
86
Można zastosować motyw do każdej działalności, włączając android:theme
wnętrze <activity>
wewnątrz pliku manifestu.
Na przykład:
<activity android:theme="@android:style/Theme.Dialog">
<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.
tools:context= ".YourAtivityName"
w katalogu głównymAby 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.
źródło
android:theme
atrybuty?android:theme="@android:style/Theme.Holo"
to składnia dodawania wbudowanego motywu Androida.android:theme="@style/MyTheme"
to składnia dodawania motywu niestandardowego opisanego wstyles.xml
pliku. W swoim rzeczywistymAndroidManifest.xml
pliku użyjesz tylko jednej lub drugiej dla każdej sekcji, a nie obu.styles.xml
a następnie użyj składniandroid:theme=@style/MyBlankTheme
.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)
źródło