基于android樣式與主題(style&theme)的詳解
更新時(shí)間:2013年06月15日 10:43:13 作者:
本篇文章是對android中的樣式與主題(style&theme)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
android 中的樣式和 CSS 樣式作用相似,都是用于為界面元素定義顯示風(fēng)格,它是一個(gè)包含一個(gè)或者多個(gè)view 控件屬性的集合。如:需要定義字體的顏色和大小。
在 CSS 中是這樣定義的:
<style>
.itcast{COLOR:#0000CC;font-size:18px;}
</style>
可以像這樣使用上面的 css 樣式: <div class="itcast"> 傳智播客 </div>
在 Android 中可以這樣定義樣式:
在 res/values/styles.xml 文件中添加以下內(nèi)容
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name=“itcast”> <!-- 為樣式定義一個(gè)全局唯一的名字 -->
<item name="android:textSize">18px</item> <!-- name 屬性為樣式要用在的 View 控件持有的屬性 -->
<item name="android:textColor">#0000CC</item>
</style>
</resources>
在 layout 文件中可以像下面這樣使用上面的 android 樣式:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ....>
<TextView style="@style/itcast"
..... />
</LinearLayout>
<style> 元素中有一個(gè) parent 屬性。這個(gè)屬性可以讓當(dāng)前樣式繼承一個(gè)父樣式,當(dāng)前樣式可以繼承到父樣式的值。當(dāng)然,如果父樣式的值不符合你的需求,你也可以對它進(jìn)行修改,如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="itcast">
<item name="android:textSize">18px</item> <!-- name 屬性為樣式要用在的 View 控件持有的屬性 -->
<item name="android:textColor">#0000CC</item>
</style>
<style name="subitcast" parent="@style/itcast">
<item name="android:textColor">#FF0000</item>
</style>
</resources>
android 中主題也是用于為應(yīng)用定義顯示風(fēng)格,它的定義和樣式的定義相同,如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name=“itcastTheme">
<item name=“android:windowNoTitle”>true</item> <!– 沒標(biāo)題 à
<item name=“android:windowFullscreen”>?android:windowNoTitle</item> <!– 全屏顯示 à
</style>
</resources>
上面“ ?android:windowNoTitle” 中的問號用于引用在當(dāng)前主題中定義過的資源的值。下面代碼顯示在AndroidManifest.xml 中如何為應(yīng)用設(shè)置上面定義的主題:
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:theme="@style/itcastTheme">
......
</application>
除了可以在 AndroidManifest.xml 中設(shè)置主題,同樣也可以在代碼中設(shè)置主題,如下:
setTheme(R.style.itcastTheme);
盡管在定義上,樣式和主題基本相同,但是它們使用的地方不同。樣式用在單獨(dú)的 View ,如: EditText 、TextView 等;主題通過 AndroidManifest.xml 中的 <application> 和 <activity> 用在整個(gè)應(yīng)用或者某個(gè) Activity,主題對整個(gè)應(yīng)用或某個(gè) Activity 進(jìn)行全局性影響。如果一個(gè)應(yīng)用使用了主題,同時(shí)應(yīng)用下的 view 也使用了樣式,那么當(dāng)主題與樣式屬性發(fā)生沖突時(shí),樣式的優(yōu)先級高于主題。
另外 android 系統(tǒng)也定義了一些主題,例如: <activity android:theme=“@android:style/Theme.Dialog”> ,該主題可以讓 Activity 看起來像一個(gè)對話框,如果需要查閱這些主題,可以在文檔的 reference à android-->R.style 中查看。
在 CSS 中是這樣定義的:
<style>
.itcast{COLOR:#0000CC;font-size:18px;}
</style>
可以像這樣使用上面的 css 樣式: <div class="itcast"> 傳智播客 </div>
在 Android 中可以這樣定義樣式:
在 res/values/styles.xml 文件中添加以下內(nèi)容
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name=“itcast”> <!-- 為樣式定義一個(gè)全局唯一的名字 -->
<item name="android:textSize">18px</item> <!-- name 屬性為樣式要用在的 View 控件持有的屬性 -->
<item name="android:textColor">#0000CC</item>
</style>
</resources>
在 layout 文件中可以像下面這樣使用上面的 android 樣式:
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ....>
<TextView style="@style/itcast"
..... />
</LinearLayout>
<style> 元素中有一個(gè) parent 屬性。這個(gè)屬性可以讓當(dāng)前樣式繼承一個(gè)父樣式,當(dāng)前樣式可以繼承到父樣式的值。當(dāng)然,如果父樣式的值不符合你的需求,你也可以對它進(jìn)行修改,如下:
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="itcast">
<item name="android:textSize">18px</item> <!-- name 屬性為樣式要用在的 View 控件持有的屬性 -->
<item name="android:textColor">#0000CC</item>
</style>
<style name="subitcast" parent="@style/itcast">
<item name="android:textColor">#FF0000</item>
</style>
</resources>
android 中主題也是用于為應(yīng)用定義顯示風(fēng)格,它的定義和樣式的定義相同,如下:
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name=“itcastTheme">
<item name=“android:windowNoTitle”>true</item> <!– 沒標(biāo)題 à
<item name=“android:windowFullscreen”>?android:windowNoTitle</item> <!– 全屏顯示 à
</style>
</resources>
上面“ ?android:windowNoTitle” 中的問號用于引用在當(dāng)前主題中定義過的資源的值。下面代碼顯示在AndroidManifest.xml 中如何為應(yīng)用設(shè)置上面定義的主題:
復(fù)制代碼 代碼如下:
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:theme="@style/itcastTheme">
......
</application>
除了可以在 AndroidManifest.xml 中設(shè)置主題,同樣也可以在代碼中設(shè)置主題,如下:
setTheme(R.style.itcastTheme);
盡管在定義上,樣式和主題基本相同,但是它們使用的地方不同。樣式用在單獨(dú)的 View ,如: EditText 、TextView 等;主題通過 AndroidManifest.xml 中的 <application> 和 <activity> 用在整個(gè)應(yīng)用或者某個(gè) Activity,主題對整個(gè)應(yīng)用或某個(gè) Activity 進(jìn)行全局性影響。如果一個(gè)應(yīng)用使用了主題,同時(shí)應(yīng)用下的 view 也使用了樣式,那么當(dāng)主題與樣式屬性發(fā)生沖突時(shí),樣式的優(yōu)先級高于主題。
另外 android 系統(tǒng)也定義了一些主題,例如: <activity android:theme=“@android:style/Theme.Dialog”> ,該主題可以讓 Activity 看起來像一個(gè)對話框,如果需要查閱這些主題,可以在文檔的 reference à android-->R.style 中查看。
您可能感興趣的文章:
- Android主題切換之探究白天和夜間模式
- Android中應(yīng)用界面主題Theme使用方法和頁面定時(shí)跳轉(zhuǎn)應(yīng)用
- Android 設(shè)置主題實(shí)現(xiàn)點(diǎn)擊波紋效果的示例
- 分析Android多主題顏色的相關(guān)問題
- Android入門教程之創(chuàng)建樣式與主題
- Android編程應(yīng)用風(fēng)格和主題詳解
- android仿iphone主題效果的主菜單
- Android實(shí)現(xiàn)換膚的兩種思路分析
- Android編程實(shí)現(xiàn)換膚功能實(shí)例
- Android開發(fā)實(shí)現(xiàn)切換主題及換膚功能示例
相關(guān)文章
Android實(shí)現(xiàn)簡單的banner輪播圖
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡單的banner輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
Flutter實(shí)現(xiàn)簡單的下載按鈕動(dòng)畫
我們在app的開發(fā)過程中經(jīng)常會(huì)用到一些表示進(jìn)度類的動(dòng)畫效果,比如一個(gè)下載按鈕,那么在flutter中一個(gè)下載按鈕的動(dòng)畫應(yīng)該如何制作呢,一起來看看吧2023-05-05
Android貝塞爾曲線初步學(xué)習(xí)第二課 仿QQ未讀消息氣泡拖拽黏連效果
這篇文章主要為大家詳細(xì)介紹了Android貝塞爾曲線初步學(xué)習(xí)的第二課,仿QQ未讀消息氣泡拖拽黏連效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Flutter移動(dòng)端進(jìn)行多渠道打包發(fā)布的全過程
在使用flutter開發(fā)的過程中,需要根據(jù)不同的環(huán)境,不同的包名來打包,下面這篇文章主要給大家介紹了關(guān)于Flutter移動(dòng)端進(jìn)行多渠道打包發(fā)布的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
Android畫圖并保存圖片的具體實(shí)現(xiàn)代碼
這篇文章介紹了在Android中畫圖并保存圖片的實(shí)例,以下是具體的實(shí)現(xiàn)方法,有需要的朋友可以參考一下2013-07-07
詳解Flutter如何繪制曲線,折線圖及波浪動(dòng)效
這篇文章主要為大家介紹線條類圖形的繪制(正弦曲線、折線圖),并且結(jié)合 Animation 實(shí)現(xiàn)了常見的波浪動(dòng)效,感興趣的小伙伴可以了解一下2022-03-03
Android之PreferenceActivity應(yīng)用詳解(2)
看到很多書中都沒有對PreferenceActivity做介紹,而我正好又在項(xiàng)目中用到,所以就把自己的使用的在這總結(jié)一下,也方便日后查找2012-11-11

