android 使用主題,自訂佈景主題

來源:互聯網
上載者:User

      開發android也這麼久了 ,對使用主題這樣的簡單事情再也沒必要去查看文檔,剛看到對使用主題,覺得寫的很好,很全,很到位,建議不是很熟悉的朋友看看

轉載 :http://eshock.blogbus.com/logs/60758767.html

使用主題Styles 樣式Themes 主題 Set the theme in the manifest 在manifest檔案中設定主題Set the theme from the application 在程式中設定主題 在設計應用程式時, 你可以使用樣式和主題來對不同的螢幕和UI 元素進行統一的格式化.樣式是一組格式化屬性, 你可以將它作為一個整體作用於布局xml檔案中的一個單獨的元素. 例如, 你可以定義一個指定某種文字大小和顏色的樣式, 然後將它施加於某種類型的View元素.主題是一組格式化屬性, 你可以將它作為一個整體,作用於你的應用程式中的所有activity, 或者某個單獨的activity. 例如, 你可以定義一個主題, 指定視窗框和面板的顏色, 菜單的字型和顏色, 然後把它作用於你的程式中的activity.樣式和主題都是資源. android提供了一些預設的樣式和佈景主題資源, 你也可以定義你自己的主題和樣式資源.建立樣式和主題的步驟如下:建立一個名為styles.xml的檔案在你的程式的res/values目錄下. 增加一個根<resources>節點.對每一種樣式或主題, 增加一個<style>元素, 該元素有一個唯一的名字, 有一個可選的parent屬性. 名字用於引用這些樣式, 而parent屬性指定它們繼承什麼樣式資源.在<style> 元素中, 使用<item>元素定義格式屬性. 每個<item>使用名字屬性來指定屬性, 並在該元素中定義該屬性的值.可以從其它xml資源, manifest或者應用程式代碼中引用這些資源.Styles 樣式這裡是一個樣式的例子:--------------------------------------------------------------------------------<?xml version="1.0" encoding="utf-8"?><resources>    <style name="SpecialText" parent="@style/Text">        <item name="android:textSize">18sp</item>        <item name="android:textColor">#008</item>    </style></resources> --------------------------------------------------------------------------------如上所示, 你可以使用<item>元素來設定特定的格式屬性. item中的name屬性可以指示一個標準的字串, 一個16進位顏色, 或者引用其它的資源類型.注意到<style>元素中的parent屬性. 該屬性讓你指定一個資源, 你的當前樣式繼承於該資源. 樣式可以繼承任何包含你想要的樣式的資源. 一般來說, 你的樣式應該總是繼承於一個標準的android樣式資源. 這樣, 你只需要定義你想要改變的部分就可以了.這裡是如何在xml布局中使用樣式:--------------------------------------------------------------------------------<EditText id="@+id/text1"          style="@style/SpecialText"          android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:text="Hello, World!" /> --------------------------------------------------------------------------------現在這個EditText widget 將被使用之前定義的樣式.Themes 主題就像樣式一樣, 主題也是使用xml <style>元素來定義的, 而且也是使用相同方式來引用的. 不同之處是你將一個主題添加到整個程式或者activity, 通過manifest中的<application>和<activity>元素. 主題不能作用於單獨的View.這裡是一個主題的例子:--------------------------------------------------------------------------------<?xml version="1.0" encoding="utf-8"?><resources>  <style name="CustomTheme">            <item name="android:windowNoTitle">true</item>    <item name="windowFrame">@drawable/screen_frame</item>    <item name="windowBackground">@drawable/screen_background_white</item>    <item name="panelForegroundColor">#FF000000</item>    <item name="panelBackgroundColor">#FFFFFFFF</item>    <item name="panelTextColor">?panelForegroundColor</item>    <item name="panelTextSize">14</item>    <item name="menuItemTextColor">?panelTextColor</item>    <item name="menuItemTextSize">?panelTextSize</item>  </style></resources> --------------------------------------------------------------------------------注意@和?符號的用法. "@"表示我們在引用一個其它地方定義的資源(可能是在這個工程內, 也可能是android架構定義的). "?"表示我們在引用一個資源值, 這個值在當前載入的主題中. 這是通過尋找一個<item>來實現的.(例如?panelTextColor尋找name="panelTextColor" 的item.)Set the theme in the manifest 在manifest檔案中設定主題如果要給一個應用程式中給所有的activity設定一個主題, 編輯AndroidManifest檔案:<application android:theme="@style/CustomTheme"> 如果要給某個activity設定一個主題, 將上面的application改為activity即可.有一些你不必定義就可以直接用的主題. 例如Dialog主題讓你的activity像一個對話方塊:<activity android:theme="@android:style/Theme.Dialog"> 如果你喜歡某個主題, 但希望能調整一些地方, 那麼就將該主題設為你的自定主題的parent.例如, 我們希望調整Theme.Dialog主題:<style name="CustomDialogTheme" parent="@android:style/Theme.Dialog"> Set the theme from the application 在程式中設定主題你也可以在程式中使用setTheme()方法載入一個主題. 主題, 你必須首先設定主題, 然後才能初始化View對象, 例如, 在調用 setContentView(View) 或者 inflate(int, ViewGroup)之前. 這樣才能保證你對你所有的UI螢幕使用了同樣的主題. 例如:-------------------------------------------------------------------------------- protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    ...    setTheme(android.R.style.Theme_Light);    setContentView(R.layout.linear_layout_3);} --------------------------------------------------------------------------------如果你希望在程式中載入一個主題, 注意該主題不會在系統啟動activity的動畫中載入, 因為這個動畫是在你的程式啟動之前發生的. 大部分情況下, 在xml裡面設定主題是一個更好的方法.關於自訂樣式和主題以及在程式中引用它們的詳細資料參見 Available Resource Types: Style and Themes.關於可用的預設主題和樣式參見 R.style.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.