編輯:Android開發實例
Android xml風格和主題文件的編寫,是涉及到整個程序界面美觀的因素之一。較好的應用風格和主題,可以實現美觀而統一的界面,這就猶如Web開發中的CSS。
Styles和Themes都是資源,存放在res/values文件夾下。
對每一個Styles和Themes,給<style>元素增加一個全局唯一的名字,也可以選擇增加一個父類屬性。在後邊我們可以用這個名字來應用風格,而父類屬性標識了當前風格是繼承於哪個風格。在<style>元素內部,申明一個或者多個<item>,每一個<item>定義了一個名字屬性,並且在元素內部定義了這個風格的值。
1.在res/values 目錄下新建一個名叫style.xml的文件。
2.對每一個風格和主題,給<style>element增加一個全局唯一的名字,也可以選擇增加一個父類屬性。在後邊我們可以用這個名字來應用風格,而父類屬性標識了當前風格是繼承於哪個風格。
3.在<style>元素內部,申明一個或者多個<item>,每一個<item>定義了一個名字屬性,並且在元素內部定義了這個風格的值。
4.你可以應用在其他XML定義的資源。
下面SDK提供的Style的例子:(SDK提供的程序會有style/Text找不到的錯誤,目前還不知道怎麼解決)
<?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>
上面的樣式可以用在單個view中如:
<EditText id=”@+id/text1″
style=”@style/mytext”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”Hello, World!” />
現在這個EditText組件的所表現出來的風格就為我們在上邊的XML文件中所定義的那樣。
編寫一個簡單的Style:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="SpecialText" > <item name="android:textSize">18sp</item> <item name="android:textColor">#EC9237</item> </style> <style name="SpecialText2" > <item name="android:textSize">26sp</item> <item name="android:textColor">#FF7F7C</item> <item name="android:fromAlpha">0.0</item> <item name="android:toAlpha">0.0</item> </style> </resources>
應用的編寫:
<TextView style="@style/SpecialText2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <EditText android:text="@+id/EditText01" style="@style/SpecialText" android:id="@+id/EditText01" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
最終實現的界面為:
當然,Android也有很多預定義的主題:
就像Style一樣,Theme依然在<style>元素裡邊申明,也是以同樣的方式引用。不同的是通過在Android Manifest中定義的<application>和<activity>元素將主題添加到整個程序或者某個 Activity,但是主題是不能應用在某一個單獨的View裡。
下邊是SDK中主題的一個例子:(SDK提供的程序會有Error:no resource found that matches the given name: panelForegroundColor等錯誤,目前還不知道怎麼解決這些錯誤)
<?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資源當中
在程序中使用主題的方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(android.R.style.Theme_Light);
setContentView(R.layout.linear_layout_3);
}
在mainfest.xml中應用主題:
為了在成用當中所有的Activity當中使用主題,你可以打開AndroidManifest.xml 文件,編輯<application>標簽,讓其包含android:theme屬性,值是一個主題的名字,如下:
<application android:theme=”@style/CustomTheme”>
如果你只是想讓你程序當中的某個Activity擁有這個主題,那麼你可以修改<activity>標簽。
編寫的簡單的一個Theme:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="CustomTheme" parent="android:Theme.Black"> <item name="android:windowNoTitle">true</item> <item name="android:testSize">14sp</item> <item name="android:textColor">#FFFF0000</item> </style> </resources>
Android中提供了幾種內置的資源,有好幾種主題你可以切換而不用自己寫。比如你可以用對話框主題來讓你的Activity看起來像一個對話框。在manifest中定義如下:
<activity android:theme=”@android:style/Theme.Dialog”>
如果你喜歡一個主題,但是想做一些輕微的改變,你只需要將這個主題添加為父主題。比如我們修改Theme.Dialog主題。我們來繼承Theme.Dialog來生成一個新的主題。
<style name=”CustomDialogTheme” parent=”@android:style/Theme.Dialog”>
繼承了Theme.Dialog後,我們可以按照我們的要求來調整主題。我們可以修改在Theme.Dialog中定義的每個item元素的值,然後我們在Android Manifest 文件中使用CustomDialogTheme 而不是 Theme.Dialog 。
一下列出了其他預定義的主題:
眾所周知,一般情況下我們使用android中的monkeyrunner進行自動化測試時,使用的是python語言來寫測試腳本。不過,最近發現可以用java調用mo
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
一般來說在Android裡要實現樹形菜單,都是用ExpandableList(也有高手自己繼承ListView或者LinearLayout來做),但是Expand
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩