在android开发中style和theme是开发者基础知识点,两者有很多容易混淆的地方,因此,总结一下其中的异同点:
一:概念
(1) Theme是针对窗体级别的,改变窗体样式的,如窗口标题、边框等。不能作用于单个View组件,是对整个应用的所有Activity或单个Activity起作用。
(2) Style是针对窗体元素级别的,改变指定控件或者Layout的样式
二:用法
Style:
(1) 在res\values\下创建styles.xml文件(2)添加<resources>节点(根节点)
(3)添加自定义的style及其属性
如:
style的写法通常为:<style name="NewsDetailActivityTheme" parent="@style/AppTheme"> <item name="android:windowActionBarOverlay">true</item> <item name="windowActionBarOverlay">true</item> </style>其中,parent属性为其父style的名字(可选),通过设置该值,可继承其它style的属性。当我们需要对现有的style的属性。当我们需要对现有的style做微小的改变
(4)为控件指定Style
<View android:id="@+id/v_dot0" style="@style/dot_style" android:background="@drawable/dot_focused" android:visibility="invisible" />
Theme:
(1)在setContentView()方法之前设置Theme:setTheme(R.style.XXX);
(2)在mainfest文件中加入Theme Theme就是Style
AndroidManifest.xml中:
<application android:theme="@style/AppTheme">
activity使用
<activity android:theme="@style/AppTheme" />在R.attr定义中以window开头的一些属性只对theme有效。
如果一个应用使用了theme,同时应用下的view也使用了style,那么当theme与样式style发生冲突时,style的优先级高于主题。