Android 中Theme的設定

來源:互聯網
上載者:User

標籤:

在 style.xml 中註冊自己的theme

<style name="Mytext">
<item name="android:textSize">18sp</item>
<item name="android:textColor">#ff99</item>

</style>

在別的檔案中引用
<ListView

android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Mytext"
></ListView>

轉載:http://zyfromcq.iteye.com/blog/1401710

  1. Theme是針對表單層級的,改變表單樣式;
  2. Style是針對表單元素層級的,改變指定控制項或者Layout的樣式。

     Android系統的themes.xml和style.xml(位於\base\core\res\res\values\)包含了很多系統定義好的style,建議在裡面挑個合適的,然後再繼承修改。


       以下屬性是在Themes中比較常見的,源自Android系統本身的themes.xml:

 <!-- Window attributes --> <item name="windowBackground">@android:drawable/screen_background_dark</item> <item name="windowFrame">@null</item> <item name="windowNoTitle">false</item> <item name="windowFullscreen">false</item> <item name="windowIsFloating">false</item> <item name="windowContentOverlay">@android:drawable/title_bar_shadow</item> <item name="windowTitleStyle">@android:style/WindowTitle</item> <item name="windowTitleSize">25dip</item> <item name="windowTitleBackgroundStyle">@android:style/WindowTitleBackground</item> <item name="android:windowAnimationStyle">@android:style/Animation.Activity</item> 複製代碼

各種樣式具體使用可看:http://henzil.easymorse.com/?p=364  android Theme使用總結      


      至於控制項的Style設計就範圍大多了,看看Eclipse的Android控制項屬性編輯器[Properties]就大概知道有哪些條目, 而Android內建的style.xml也只是定義每個控制項的預設樣式而已....不過控制項的style不建議大改,耐看的style更能讓使用者長時間 使用軟體。另外,控制項的Style在很多情況下都用到9.png,學習9.png就必須到\base\core\res\res\drawable- hdpi裡面看看,裡面有很多系統內建的9.png。

style和theme都是資源。你可以用android提供的一些預設的style和theme資源,你也可以自訂你自己的style和theme資源。
如何建立自訂的style和theme:
1.在res/values 目錄下建立一個名叫style.xml的檔案。增加一個<resources>根節點。
2.對每一個style和theme,給<style>element增加一個全域唯一的名字,也可以選擇增加一個父類屬性。在後邊我們可以用這個名字來應用風格,而父類   屬性標識了當前風格是繼承於哪個風格。
3.在<style>元素內部,申明一個或者多個<item>,每一個<item>定義了一個名字屬性,並且在元素內部定義了這個風格的值。
4.你可以應用在其他XML定義的資源。

Style:
下邊是一個申明風格的執行個體:

<?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當中的名字的屬性可以是一個字串,一個16進位數所表示的顏色或者是其他資源的引用。
注意在<style>元素中的父類屬性。這個屬性讓你可以能夠定義一個資源,當前風格可以從這個資源當中繼承到值。你可以從任何包 含這個風格的資源當中繼承此風格。通常上,你的資源應該一直直接或者間接地繼承Android的標準風格資源。 這樣的話,你就只需要定義你想改變的值。
在這個例子當中的EditText元素,示範了如何引用一個XML布局檔案當中定義的風格:

<EditText id="@+id/text1"    style="@style/SpecialText"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="Hello, World!" />
現在這個EditText組件的所表現出來的風格就為我們在上邊的XML檔案中所定義的那樣。
Theme:
就像style一樣,主題依然在<style>元素裡邊申明,也是以同樣的方式引用。

不同的是你通過在Android Manifest中定義的<application>和<activity>元素將主題添加到整個程式或者某個 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 用的顏色和
panelForegroundColor中定義的一樣)。這中技巧只能用在XML資源當中。

設定主題(theme):
1.在manifest當中設定主題
1.為了在成用當中
所有的Activity當中使用主題,你可以開啟AndroidManifest.xml 檔案,
編輯<application>
標籤,讓其包含android:theme屬性,值是一個主題的名字,如下:

<application android:theme="@style/CustomTheme">
2.如果你只是想讓你程式當中的
某個Activity擁有這個主題,那麼你可以
編輯<activity>標籤
Android中提供了幾種內建的資源,有好幾種主題你可以切換而不用自己寫。比如你可以用對話方塊主題來讓你的Activity看起來像一個對話方塊。在manifest中定義如下:<activity android:theme="@android:style/Theme.Dialog">(看前面連結有很多theme) 

補充:
如果你喜歡一個主題,但是想做一些輕微的改變,你只需要將這個主題添加為父主題。比如我們修改Theme.Dialog主題。我們來繼承Theme.Dialog來產生一個新的主題。

<style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">
繼承了Theme.Dialog後,我們可以按照我們的要求來調整主題。我們可以修改在Theme.Dialog中定義的每個item元素的值,然後我們在Android Manifest 檔案中使用CustomDialogTheme 而不是 Theme.Dialog 。
2.在程式當中設定主題
如果需要的話,你可 以在Activity當中通過使用方法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中定義似乎是一個更好的辦法。
 

Android 中Theme的設定

聯繫我們

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