android api 指南-Styles and Themes

來源:互聯網
上載者:User

標籤:

  style是一些屬性值得集合,這些屬性值用來指定一個view 或者 window 的外觀和格式。style可以只指定height,padding,font color,font size,background color,和很多其他屬性。style 定義在xml資源檔中,與layout xml 檔案獨立開的。android中的style與web中的css有相似的設計哲學-允許設計樣式和內容的分離。

  例如,使用style,你可以將這樣的 layout XML:

<TextView    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:textColor="#00FF00"    android:typeface="monospace"    android:text="@string/hello"/>

 轉換如下的代碼:

<TextView    style="@style/CodeFont"    android:text="@string/hello" />

  所有與樣式相關的屬性都從layout XML 中移除了,放入了一個叫CodeFont的style中了,這個style被控制項的樣式屬性中引用了。你可以在接下來的部分看到這個style。

  theme 是被整個 activity 或者app,而不是單個view(就像上面的例子)引用的style。當一個style被用作theme時,所有style指定的屬性並且被activity或者app中的每個view所支援的屬性,將會被引用。例如,你可以應用像CodeFont這樣的style作為theme到一個Activity中,然後Activity中所有的文字都會變成green monospace字型。

定義 Style

  你只需要將XML檔案儲存在項目的res/values/目錄下,就可以建立style。XML檔案的名字是任意指定的,但是檔案的拓展名必須是.xml 並且必須被儲存在res/values/檔案夾下。

  在檔案中添加<style>元素,所有的style中的name屬性是style的唯一的標識(這個屬性是必須的)。接著為每個style的所指定的屬性添加一個<item>元素,元素的name用來聲明你想定義的style屬性,同時給出屬性的值(值是必須的)。item的值可以是一個有特殊含義的字串,一個十六進位的顏色值,其他資源類型的引用,或者style屬性相關的值。下面是單個style檔案的例子:

<?xml version="1.0" encoding="utf-8"?><resources>    <style name="CodeFont" parent="@android:style/TextAppearance.Medium">        <item name="android:layout_width">fill_parent</item>        <item name="android:layout_height">wrap_content</item>        <item name="android:textColor">#00FF00</item>        <item name="android:typeface">monospace</item>    </style></resources>

  在編譯時間,<resources>的所有子項目都被轉換為一個app的資來源物件,可以使用在<style>元素定義的name值引用這個對象。例子裡面的style能夠在一個XML布局檔案裡面用 @style/CodeFont來引用(樣本在上面的介紹中)。

  <style>元素的parent屬性是可選的,用來指定繼承自其它資源ID中的樣式。如果需要你也可以在<style>中覆蓋繼承來的樣式。

  注意,在Activity或者app中使用的style和為view定義的style在XML檔案中的定義是完全一樣的。例如上面例子中的style可以定義單個View的樣式或者在Activity和app中用作theme。我們將在後面討論如何使用style來定義單個style的樣式或者用作app的theme。

(翻譯整理自https://developer.android.com/intl/zh-cn/guide/topics/ui/themes.html#DefiningStyles)

android api 指南-Styles and Themes

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.