首页 > 代码库 > 赵雅智_android样式与主题

赵雅智_android样式与主题

样式与主题的区别

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

<activity
              android:name=".MainActivity"
              android:label="@string/title_activity_main" 
              android:theme="@style/theme">