Android style 的使用及使用場景
阿新 • • 發佈:2018-12-08
style的使用
- 第一步 :開啟檔案 res -> values -> styles.xml
- 第二步 :自定義自己的< style> < /style>
- styles 中是由 < resources>< /resources> 的根佈局包括。
- 內部由< style > < item> < /item> < /style> 進行自定義屬性。
- < 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>
- 分析:
- 可以使用 . (點)的方式繼承自定義Style,也可以使用parent 來繼承自定義屬性。
- 使用的優先順序順序,在其中看到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 的使用場景
- 減少重複: 在自己需要重複設定一些空間屬性的時候,可以將其抽取出來,進行單獨使用。例如:屬性相同的文字大小及顏色設定。
- 全域性設定: 比如全域性設定背景屬性、字型等。