Android 的Style和theme

1.Style和Theme

Android的style分為兩個方面:

1.Theme 是針對窗體級別的,改變窗體樣式

2.Style 是針對窗體元素級別的,改變指定控件或Layout的樣式

Android 系統(tǒng)的themes.xml和style.xml(位于系統(tǒng)源代碼frameworks\base\core\res\res\values\)包含很多系統(tǒng)定義好的style。Style和Theme都是資源。

1)Style是包含一種或者多種格式化屬性的集合,可以將其作為一個單位用在布局XML單個元素中。例如:定義風(fēng)格(定義文字的字號和顏色),然后用在view元素中。

2)Themeye是包含一種或者多種格式化屬性的集合,可以將其作為一個單位用所有的Activity或某個Activity中。例如:定義主題(為Window Frame和Panel的前景和背景定義了一組顏色并為菜單定義了文字的大小和顏色),然后用在Activity中。

2.自定義Style和Theme

自定義Style步驟:

1.在res/values目錄下新建style.xml

2.增加一個<resource>根節(jié)點(diǎn),對每一種Style定義name,也可以增加parent屬性

3.<style>元素內(nèi)部可以有多個item

例如:

<resource>

<style name="SpecialText" parent="@style/Text">

<item name="android:textSize">20sp</item>

<item name="android:textColor">#0000000<item>

</style>

</resource>

在某個View中只需 style="@style/SpecialText"即可引用該Style。

自定義Theme 的步驟和自定義Style類似,不同的是Theme應(yīng)用在Android Manifest中定義的

和元素將主題添加到整個程序或者某個 Activity,但是主題是不能應(yīng)用在某一個單獨(dú)的View里。

<resource>

<style name="CustomTheme">

<item name="android:windowNoTitle">true</item>

<item name="windowFrame">@drawable/screen_frame</item>

<item ame="panelForegroundColor">#FF000000</item>

<item "panelTextColor">?panelForegroundColor</item>

</style>

</resource>

注意我們用了@符號和?符號來應(yīng)用資源。@符號表明了我們應(yīng)用的資源是前邊定義過的(或者在前一個項(xiàng)目中或者在Android 框架中)。問號?表明了我們引用的資源的值在當(dāng)前的主題當(dāng)中定義過。通過引用在里邊定義的名字可以做到(panelTextColor用的顏色和panelForegroundColor中定義的一樣)。這中技巧只能用在XML資源當(dāng)中。

在manifest當(dāng)中設(shè)置主題

打開AndroidManifest.xml 文件,編輯標(biāo)簽,讓其包含android:theme屬性,值是一個主題的名字,如下:

<application android:theme="@style/CustomTheme"></application>

在程序當(dāng)中設(shè)置主題

如果需要的話,你可 以在Activity當(dāng)中通過使用方法setTheme()來加載一個主題。注意,如果你這么做的話,你應(yīng)該初始化任何View之前設(shè)置主題。比如,在調(diào) 用setContentView(View) 和inflate(int, ViewGroup)方法前。這保證系統(tǒng)將當(dāng)前主題應(yīng)用在所有的UI界面。例子如下:

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

...

setTheme(android.R.style.Theme_Light);

setContentView(R.layout.linear_layout_3);

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容