1.主题theme
theme是应用的主题,或者说风格。通过设置主题可以改变应用的相关皮肤。
一般主题作用于整个应用,即对应的是application,但有时候部分界面需要特殊的处理,比如为一个特定的activity设置一个单独的皮肤。
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
……
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:theme="@style/AppTheme.theme1">
……
</activity>
</application>
上面在配置文件中分别从两个地方设置了主题:
①在application中设置,这个就是全局的,如果不再单独为某个activity设置主题,那么activity的主题就是“@style/AppTheme”。
②在activity中设置,比如为MainActivity单独设置一个主题为:@style/AppTheme.theme1。
所以主题的作用域就是application和activity,不涉及到内部的View。
当然,除了在xml中设置,也可以用代码动态设置:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(android.R.style.mytheme);
setContentView(R.layout.activity_main);
}
注意:设置主题要在setContentView()之前。
2.常见的系统主题
android:theme="@android:style/Theme.Dialog" 将一个Activity显示为对话框模式
android:theme="@android:style/Theme.NoTitleBar" 不显示应用程序标题栏
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 不显示应用程序标题栏,并全屏
android:theme="Theme.Light" 背景为白色
android:theme="Theme.Light.NoTitleBar" 白色背景并无标题栏
android:theme="Theme.Light.NoTitleBar.Fullscreen" 白色背景,无标题栏,全屏
android:theme="Theme.Black" 背景黑色
android:theme="Theme.Black.NoTitleBar" 黑色背景并无标题栏
android:theme="Theme.Black.NoTitleBar.Fullscreen" 黑色背景,无标题栏,全屏
android:theme="Theme.Wallpaper" 用系统桌面为应用程序背景
android:theme="Theme.Wallpaper.NoTitleBar" 用系统桌面为应用