样式与主题的区别
样式应用于特殊的组件,主题应用与整个应用或整个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">