theme&style使用

1 style

1.1 什么是 style?

官方文檔是這樣定義style的:

A style resource defines the format and look for a UI. A style can be applied to an individual View (from within a layout file) or to an entire Activity or application (from within the manifest file).

style是作用于單個view的,而theme是作用于整個Activity或者application。

1.2 文件位置

res/values/filename.xml

1.3 資源引用

In XML:@[package:]style/style_name

1.4 語法

<?xml version="1.0" encoding="utf-8"?>
//根標(biāo)簽
<resources>
   //定義一個包含item的style
   <style
       name="style_name" parent="@[package:]style/style_to_inherit">
       //定義一個style的屬性
       <item
           name="[package:]style_property_name">style_value
       </item>
   </style>
</resources>

<resources>元素的每個子項都會在編譯時轉(zhuǎn)換成一個應(yīng)用資源對象,該對象可由<style>元素的name屬性中的值引用。

<style>元素中的parent屬性是可選屬性,它指定應(yīng)作為此樣式所繼承屬性來源的另一樣式的資源ID。如果愿意,您可在隨后替換這些繼承的樣式屬性。

1.5 示例

定義style的XML文件(保存在res/values里):

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CustomText" parent="@style/Text">
        <item name="android:textSize">20sp</item>
        <item name="android:textColor">#008</item>
    </style>
</resources>

style作用于TextView的XML文件(保存在res/layout):

<?xml version="1.0" encoding="utf-8"?>
<EditText
    //上述定義的style: CustomText
    style="@style/CustomText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Hello, World!" />

1.6 繼承

有兩種方式可以繼承:

  • 通過 parent
  • 通過點(.)

現(xiàn)在我們定義一個style,繼承Android平臺的默認文本外觀,然后對其進行修改:

    <style name="GreenText" parent="@android:style/TextAppearance">
        <item name="android:textColor">#00FF00</item>
    </style>

可以通過<style>元素中的parent屬性指定應(yīng)作為您的樣式所繼承屬性來源的樣式。您可以利用它來繼承現(xiàn)有樣式的屬性,然后只定義您想要更改或添加的屬性。 您可以從自行創(chuàng)建的樣式或平臺內(nèi)建的樣式繼承屬性。

如果您想從自行定義的樣式繼承屬性,則不必使用parent屬性, 而是只需將您想繼承的樣式的名稱以前綴形式添加到新樣式的名稱之中,并以句點進行分隔。

例如:要創(chuàng)建一個繼承上文定義的GreenText樣式的新樣式,但將顏色設(shè)置為紅色。

    <style name="GreenText.Red">
        <item name="android:textColor">#FF0000</item>
    </style>

請注意<style>標(biāo)記中沒有 parent 屬性,但由于name屬性以GreenText樣式名稱(這是您創(chuàng)建的一個樣式)開頭,因此這個樣式會繼承該樣式的所有樣式屬性。 這個樣式隨后會替換android:textColor屬性,將文本設(shè)置為紅色。 您可以@style/GreenText.Red形式引用這個新樣式。

您可以通過使用句點鏈接名稱繼續(xù)進行這樣的繼承,次數(shù)不限。

  • 注意:這種通過將名稱鏈接起來的繼承方法只適用于由您自己的資源定義的樣式。 您無法通過這種方法繼承Android內(nèi)建樣式。 要引用內(nèi)建樣式(例如TextAppearance),您必須使用parent屬性。

  • 注意:當(dāng)使用parent指定父style之后,則前綴方式不再起作用。只是單純的作為style當(dāng)名字。(可自行驗證)

2 theme

2.1 什么是 theme?

theme是作用于整個activity或者Applicationstyle。本質(zhì)上也是style

2.2 用法

style本質(zhì)上是一樣的,只是作用域不一樣。

我這里只是簡單講解了一下,網(wǎng)上有很多優(yōu)秀的文章,專門講解如何使用,我這里就不詳細展開了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Attr 屬性,風(fēng)格樣式的最小單元; Attr 的定義 在自定義 View 的時候,在 res/attrs.x...
    秀花123閱讀 1,660評論 0 4
  • 關(guān)于Attr、Style和Theme詳解 本文主要參考以下三篇博客的內(nèi)容,感謝三位的分享 1.Attr、Style...
    ifjgm閱讀 6,107評論 2 17
  • 樣式和主題(Styles and Themes) 一個樣式(Style)是一個包含了指定樣子和格式的作用于視圖控件...
    張云飛Vir閱讀 2,925評論 0 51
  • 都已經(jīng)習(xí)慣了 即便再困再累 出去跟朋友瘋一天一夜 還是自己周末在宿舍宅一天 明明困到不行 累到躺床上立馬能睡著 硬...
    米米ena閱讀 141評論 0 0
  • 姓名:母光艷 公司:寧波貞觀電器 寧波盛和塾第235期,利他二組 【日精進打卡第459天】 【知-學(xué)習(xí)】 誦讀《六...
    母光焱閱讀 141評論 0 0

友情鏈接更多精彩內(nèi)容