样式与主题的区别
样式应用于特殊的组件,主题应用与整个应用或整个Activity
主题不仅单单显示内容的风格(大小、颜色),而且可以设置窗口的显示风格
当主题的设置属性与样式的设置属相相同时,系统按样式的设置属性显示
系统定义的一些常有主题:
<activity android:theme="@android:style/Theme.Dialog"></activity>对话框风格
<activity android:theme="@android:style/Theme.Translucent"></activity>透明风格
可以通过文档reference->android->R.style查看
样式
在styles.xml文件里声明样式或主题
样式声明
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppBaseTheme" parent="android:Theme.Light"></style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> </style> <!-- 样式1 --> <style name="style_textviewSize"> <item name="android:textSize">20sp</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:gravity">center</item> </style> <!-- 样式2继承样式1 --> <style name="style_textviewColor" parent="style_textviewSize"> <item name="android:textColor">#ff0000</item> </style> <!-- 继承父样式的格式2 父样式.子样式 --> <style name="style_textviewColor.subChiidStyle"> <item name="android:textColor">#0000FF</item> </style> </resources>
样式应用与特定控件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.android_theme.MainActivity$PlaceholderFragment" > <TextView android:id="@+id/textView1" style="@style/style_textviewSize" android:text="TextView1" /> <TextView android:id="@+id/textView2" style="@style/style_textviewColor" android:layout_below="@+id/textView1" android:text="TextView2" /> <TextView android:id="@+id/textView3" style="@style/style_textviewColor.subChiidStyle" android:layout_below="@+id/textView2" android:text="TextView3" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView3" android:text="TextView4" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView4" android:text="TextView5" /> </RelativeLayout>
主题
主题应用与整个应用或activity在manifest.xml文件里进行设置
主题应用与整个应用或activity在style.xml文件里进行设置
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 主题设置 --> <style name="theme"> <!-- 没标题 --> <item name="android:windowNoTitle">true</item> <!-- 全屏显示 --> <item name="android:windowFullscreen">?android:windowNoTitle</item> </style> </resources>?:?表示引用在当前主题中定义过的资源的值,也就是android:windowNoTitle
应用与整个应用
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/theme" >
<activity android:name=".MainActivity" android:label="@string/title_activity_main" android:theme="@style/theme">