主题跟样式类似,也是放在路径/res/values下同样以<resource.../>为根元素
同样使用<style.../>元素来定义主题
但是它跟样式的区别在于
主题不能作用于单个的View组件,主题只对整个应用中的所有Activity起作用,或对指定的Activity起作用.
主题定义的格式只能是改变窗口外观的格式,如窗口标题,窗口边框
下面把上一篇的例子稍加改动,在my_style.xml中再定义一个主题
<style name="Theme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowFrame">@drawable/window_border</item>
<item name="android:windowBackground">@drawable/fengjing</item>>
</style>
在需要调用此主题的界面代码中来调用该主题
public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.Theme);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
setTheme(R.style.Theme)这句代码一定要在窗体初始化之前,即super.onCreate(savedInstanceState)之前.
另一种使用主题的方式是配置AndroidManifest.xml
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" android:theme="@style/Theme">
<application>元素中添加 android:theme="@style/Theme" 属性就可以了
运用主题后,运行效果如下
从上图可以看到,窗体的边框和背景已经改变了