《Android》『Style & Theme』- Style 與 Theme 的使用方式與差異

《簡單介紹》

在設計 Android 的程式介面時,我們會將所布局的不同介面元件,分別設定其所需的屬性,以 TextView 元件來說,我們在布局的同時,通常會順便加入其元件長寬、字體大小以及字體顏色…等屬性,一般來說直接設定每個元件的屬性即可,但若當同樣屬性設定的介面元件一直重複出現的時候,我們就可以利用自訂 Style 與 Theme 的方式,簡化重複性的布局,進而加快我們撰寫程式的速度。

 

《Style 與 Theme 的差別》

Style 與 Theme 其實是兩個很相像的東西,都是一種可以套用的格式定義,唯一的差別在於,Theme 的對象是針對 Application 與 Activity 設定整個程式的外觀,而 Style 的對象則是設定布局介面元件的屬性

 

《宣告 & 使用方式》

以下透過程式碼片段的方式,分別說明其宣告以及使用的方式。

➥Theme 的設定與使用

➥Style 的設定與使用

➥Style 的繼承方式

1. Theme 的設定與使用

Theme 的設定格式

在定義 Theme 的時候,除了用 parent 屬性繼承一個系統內建的 Theme 之外,我們亦可以利用宣告 <item> 屬性來修改 Theme 的外觀。

AndroidManifest.xml

當我們設定好 Application 的 Theme 以後,整個 Application 中的 Activity 皆會套用這個 Theme,除非 Activity 本身亦有另外設定自己的 Theme,因此在上面的程式碼片段中,我們同時對 Application 與其內的 Activity 做了 Theme 的屬性設定,其實是有它的意義的。

style.xml

我們會將 Theme 的屬性在 AndroidManifest.xml 中做設定,這邊要提醒的是,Theme 其實本身就是一種 Style,因此我們在 AndroidManifest.xml 中所做的 Theme 屬性設定,其實是指向放在 style.xml 中的一個 <style> 介面格式定義。

 

2. Style 的設定與使用

Style 的宣告方式其實就跟前面提到的 Theme 一模一樣,唯一需要注意的是,Style 是用來設定介面元件屬性的。

style.xml

建立一個名稱為 MyTextStyle 的 style,它是以系統內建的 android:TextAppearance 屬性為基礎(若不需要亦可直接省略 parent),並利用 <item> 標籤另外自訂所需的屬性,定義好 style 之後,就可以於介面佈局中,用來設定介面元件的屬性。

套用自訂的 MyTextStyle

套用系統內建的 TextAppearance

在使用系統內建的 style 時,可以用 style = “?android:style/TextAppearance” 取代  style = “@android:style/TextAppearance”,意思是當找不到指定的 style,就會使用系統預設值。

 

3. Style 的繼承方式

Style 還有一個很方便的特性,就是它是可以互相繼承的,以前面的例子為例,當我們在定義標籤內的 parent 屬性時,其實就代表著我們定義了這個 style 所繼承的父 style,style 的繼承有兩種方式,範例如下 –

透過 parent 繼承

透過 “.” 繼承

透過”.”的繼承,新的 style 名稱為MyTextStyle.CentHori,便同時擁有了 MyTextStyle 與自己本身所設定的屬性。

賽肥膩膩

我們是低調到不行的肥膩夫妻檔,一路上一邊吵鬧一邊記錄著生活大小事,最近迷上了宅在家追劇,希望能透過文字將所有看過的影集好好紀錄,整理成屬於我們自己的回憶資料庫。

上 / 下一篇文章

臉書留言

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *