android中可以自定義主題和風格。風格,也就是style,我們可以將一些統一的屬性拿出來,比方說,長,寬,字體大小,字體顏色等等。可以在res/values目錄下新建一個styles.xml的文件,在這個文件里面有resource根節點,在根節點里面添加item項,item項的名字就是屬性的名字,item項的值就是屬性的值,如下所示:
1
2
3
4
5
6
7
|
<? xml version = "1.0" encoding = "utf-8" ?> < resources > < style name = "MyText" parent = "@android:style/TextAppearance" > < item name = "android:textColor" >#987456</ item > < item name = "android:textSize" >24sp</ item > </ style > </ resources > |
style中有一個父類屬性parent, 這個屬性是說明當前的這個style是繼承自那個style的,當然這個style的屬性值中都包含那個屬性中的,你也可以修改繼承到的屬性的值,好了,style完成了,我們可以測試一下效果了,先寫一個布局文件,比如說一個TextView什么的,可以用到這個style的。這里我就寫一個EditText吧。下面是布局文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = "match_parent" android:layout_height = "match_parent" > < EditText android:id = "@+id/myEditText" android:layout_width = "match_parent" android:layout_height = "match_parent" style = "@style/MyText" android:text = "測試一下下" /> </ LinearLayout > |
說完了style,下面就說說Theme,Theme跟style差不多,但是Theme是應用在Application或者Activity里面的,而Style是應用在某一個View里面的,還是有區別的,好了,廢話不多說,還是看代碼吧。下面的是style文件:
1
2
3
4
5
6
7
8
9
10
11
12
|
<? xml version = "1.0" encoding = "utf-8" ?> < resources > < style name = "MyText" parent = "@android:style/TextAppearance" > < item name = "android:textColor" >#987456</ item > < item name = "android:textSize" >24sp</ item > </ style > < style parent = "@android:style/Theme" name = "CustomTheme" > < item name = "android:windowNoTitle" >true</ item > < item name = "android:windowFrame" >@drawable/icon</ item > < item name = "android:windowBackground" >?android:windowFrame</ item > </ style > </ resources > |
可以看到這里寫了一個繼承自系統默認的Theme的主題,里面有3個屬性,這里強調一下第三個屬性的值的問題,這里打個問號,然后加前面的一個item的名字表示引用的是那個名字的值,也就是那個名字對應的圖片。
然后我們在Manifest.xml里面的Application里面加一個Theme的屬性,這個屬性對應的就是我們上面寫的Theme。
1
2
3
4
5
6
7
8
9
|
< application android:icon = "@drawable/icon" android:label = "@string/app_name" android:theme = "@style/CustomTheme" > < activity android:name = ".TestStyle" android:label = "@string/app_name" > < intent-filter > < action android:name = "android.intent.action.MAIN" /> < category android:name = "android.intent.category.LAUNCHER" /> </ intent-filter > </ activity > |
上面的代碼沒有標題欄,背景和fram都是我們設置的圖片。當然也可以在代碼中設置主題:
1
2
3
4
5
6
7
8
9
10
11
|
package com.test.shang; import android.app.Activity; import android.os.Bundle; public class TestStyle extends Activity { @Override protected void onCreate (Bundle savedInstanceState) { super .onCreate(savedInstanceState); setTheme(R.style.CustomTheme); setContentView(R.layout.test_style); } } |