1,什么是样式


  • style(样式)是针对窗体元素级别的,改变指定控件或者Layout的样式。 
  • 抽取一些共同的属性写到style,可以省略大量重复的属性代码。

 


 


2,样式的创建:


【1】在res/values目录下新建一个名叫style.xml的文件。增加一个 <resources>根节点。


【2】在<resources>根节点中新建< style>元素,并设置一个唯一的name,也可以选择增加一个父类属性(parent)。通过name来引用,而父类属性标识了当前风格是继承于哪个风格。 (可以引用另一个style,但在一般情况下,会继承Android的标准风格资源并加以修改)


<style name="MyStyle" parent="TextViewStyle">     <!--设置name 和parent-->


【3】在<style>元素内部,可以申明一个或者多个<item>,每一个<item>定义了一个名字属性,并且在元素内部定义了这个风格的值。


 


4,使用系统样式修改,修改部分值


  • 你可以在其他XML定义的资源中通过style=”@style/MyStyle”引用。来引用各式各样的样式

 


【1】如果style中定义的属性和View中定义的重复,View中的属性会覆盖style中定义的属性。


//如果style中定义的属性和View中定义的重复,View中的属性会覆盖style中定义的属性。
     <style name="MyStyle" parent="TextViewStyle">     <!--设置name 和parent-->
        <item name="android:textColor">#000</item>     <!--字体颜色-->
        <item name="android:textSize">20sp</item>      <!--字体大小-->
        <item name="android:layout_height">wrap_content</item>    <!--控件高度->
        <item name="android:layout_width">match_parent</item>     <!--控件宽度-->
        <item name="android:background">#8f00</item>              <!--背景色-->
        <item name="android:gravity">center_horizontal</item>     <!--view中内容的位置限定-->
        <item name="android:layout_weight">1</item>               <!--比重-->
    </style>

 


 


 【2】此处没有设置Parent属性,但由于name以MyStyle.开头,所以MyStyle.red会完全继承MyStyle 


//此处没有设置Parent属性,但由于name以MyStyle.开头,所以MyStyle.red会完全继承MyStyle 
 <style name="MyStyle.red" >  
        <item name="android:textColor">#000</item>              <!--字体颜色-->
        <item name="android:textSize">20sp</item>               <!--字体大小-->
        <item name="android:layout_height">wrap_content</item>  <!--控件高度-->
        <item name="android:layout_width">match_parent</item>   <!--控件宽度-->
        <item name="android:background">#8f00</item>            <!--背景色-->
        <item name="android:gravity">center_horizontal</item>   <!--view中内容的位置限定-->
        <item name="android:layout_weight">1</item>             <!--比重-->
    </style>

 


 


【3】同上,MyStyle.red.big会完全继承MyStyle.red


//同上,MyStyle.red.big会完全继承MyStyle.red
    <style name="MyStyle.red.big" >  
        <item name="android:textColor">#000</item>               <!--字体颜色-->
        <item name="android:textSize">20sp</item>                <!--字体大小-->
        <item name="android:layout_height">wrap_content</item>   <!--控件高度-->
        <item name="android:layout_width">match_parent</item>    <!--控件宽度-->
        <item name="android:background">#8f00</item>             <!--背景色-->
        <item name="android:gravity">center_horizontal</item>    <!--view中内容的位置限定-->
        <item name="android:layout_weight">1</item>              <!--比重-->
    </style>

 


 


【4】注意使使用MyStyle.red.big:


  • 这种通过将名称链接起来的继承方法只适用于由您自己的资源定义的样式。
  • 您无法通过这种方法继承 Android 内建样式。要引用内建样式(例如TextAppearance),您必须使用 parent 属性。