Я знаю, как применить тему ко всему приложению, но куда мне пойти, чтобы применить тему только к одному действию?
86
Вы можете применить тему к любому действию, включив ее android:theme
внутрь <activity>
файла манифеста.
Например:
<activity android:theme="@android:style/Theme.Dialog">
<activity android:theme="@style/CustomTheme">
И если вы хотите установить тему программно, используйте setTheme()
перед вызовом setContentView()
и super.onCreate()
метод внутри onCreate()
метода.
tools:context= ".YourAtivityName"
Чтобы установить его программно в 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);
Чтобы установить в области приложения в Manifest.xml (все действия):
<application android:theme="@android:style/Theme.Holo" android:theme="@style/MyTheme">
Чтобы установить в области действия в Manifest.xml (одно действие):
<activity android:theme="@android:style/Theme.Holo" android:theme="@style/MyTheme">
Чтобы создать собственную тему, вам нужно будет объявить тему в файле themes.xml и установить стили в файле styles.xml.
источник
android:theme
атрибута?android:theme="@android:style/Theme.Holo"
- это синтаксис для добавления встроенной темы Android.android:theme="@style/MyTheme"
- это синтаксис для добавления настраиваемой темы, описанной в вашемstyles.xml
файле. В вашем фактическомAndroidManifest.xml
файле вы должны использовать только один или другой для каждого раздела, а не оба.styles.xml
и затем используйте синтаксисandroid:theme=@style/MyBlankTheme
.Перед тем как позвонить
setContentView()
, позвонитеsetTheme(android.R.style...)
и просто замените ... на ту тему, которая вам нужна (Theme, Theme_NoTitleBar и т. Д.).Или, если ваша тема является настраиваемой темой, замените ее целиком, чтобы получить
setTheme(yourThemesResouceId)
источник