1. 程式人生 > >Android style 的使用及使用場景

Android style 的使用及使用場景

style的使用

  • 第一步 :開啟檔案 res -> values -> styles.xml
  • 第二步 :自定義自己的< style> < /style>
  1. styles 中是由 < resources>< /resources> 的根佈局包括。
  2. 內部由< style > < item> < /item> < /style> 進行自定義屬性。
  3. < style> < /style>中兩個屬性 name 和parent
    在這裡插入圖片描述
    name : 自定義樣式名稱,必填。
    parent:繼承的父類,選填。該屬性可以繼承需要的控制元件的屬性
  • 第三步:使用。
    styles.xml
  <!--自定義style-->
    <style name="CustomStyle">
        <item name="android:textColor">@color/colorPrimaryDark</item>
        <item name="android:textSize">10sp</item>
    </style>

    <style name="CustomStyle.changeSize">
<item name="android:textSize">30sp</item> </style> <style name="CustomTextViewSub" parent="Widget.AppCompat.AutoCompleteTextView"></style>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="無樣式" /> <TextView style="@style/CustomStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自定義樣式" /> <TextView style="@style/CustomStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自定義樣式並自設大小為20sp" android:textSize="20sp" /> <TextView style="@style/CustomStyle.changeSize" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="繼承自定義樣式並自設大小為30sp" /> <TextView style="@style/ChangeSize" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="繼承自定義樣式並自設大小為30sp" /> <TextView style="@style/CustomTextViewSub" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="繼承已有的父類屬性" /> </LinearLayout>

在這裡插入圖片描述

  • 分析:
  1. 可以使用 . (點)的方式繼承自定義Style,也可以使用parent 來繼承自定義屬性。
  2. 使用的優先順序順序,在其中看到style中如果定義了字型大小,layout佈局檔案中也定義了字型大小,首先應採用那個呢?下面會詳細闡述,至:style的繼承關係。

Style的繼承關係

  • 樣式屬性採納順序:
    View自己的樣式 > 上一層ViewGroup的屬性 > 上上層的屬性值… > activivty主題 > application 主題
<!-- 全域性字型樣式-->  
<style name="DefaultFontStyle">   
    <item name="android:textSize">18px</item>  
    <item name="android:textColor">#0000CC</item>  
</style>  
  
<!-- 全域性背景色-->  
<style name="DefaultBgColor" parent="@style/DefaultFontStyle">   
    <item name="android:background">#F2F2F2</item>  
</style>  
  
<!-- 全域性樣式-->  
<style name="DefaultStyle" parent="@style/DefaultBgColor">   
</style>  
  
<!-- textView字型樣式-->  
<style name="TextViewFontStyle">   
    <item name="android:textSize">20px</item>  
</style>  
  • application 設定的主題:
    xml程式碼:
<application android:theme="@style/DefaultStyle">  
  • activity設定的主題:
    xml程式碼:
<activity android:name=".AccountManageActivity"  
      android:theme="@style/DefaultStyle">  
  • TextView樣式設定:
    layout佈局的xml程式碼
 <TextView   
 android:layout_width="match_parent"   
 android:layout_height="wrap_content"  
 android:text="我在做什麼:"  
 style="@style/TextViewFontStyle"  
 /> 

最終,TextView的字型大小為20px,顏色為 #0000CC.

style 的使用場景

  1. 減少重複: 在自己需要重複設定一些空間屬性的時候,可以將其抽取出來,進行單獨使用。例如:屬性相同的文字大小及顏色設定。
  2. 全域性設定: 比如全域性設定背景屬性、字型等。