97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠(yuǎn)見教育科技集團(tuán) >> 新聞動(dòng)態(tài) >> Android資料 >> Android如何自定義樣式和主題  
 
Android如何自定義樣式和主題
分享到:

Android也可以像HTML/CSS中的style一樣,使用自定義的style樣式。Android一般通過value 文件夾下面新建一個(gè)styles.xml文件來設(shè)置自定義樣式。這里開發(fā)者可以設(shè)置高度、填充字體顏色、字體大小、背景顏色等描述一個(gè)View或者一個(gè)窗口的顯示屬性。這就像Web開發(fā)中的CSS樣式表,使我們的樣式獨(dú)立于內(nèi)容進(jìn)行設(shè)計(jì)開發(fā)。

主題和樣式都是通過在xml文件中預(yù)定義一系列屬性值,通過這些屬性值來形成統(tǒng)一的顯示風(fēng)格。不同的是,樣式只能應(yīng)用于某種類型的View;而主題剛好相反,不能應(yīng)用于特定的View,而只能作用于一個(gè)或多個(gè)Activity,或是整個(gè)應(yīng)用。

下面通過代碼學(xué)習(xí)一下如何自定義樣式與主題,并在程序中應(yīng)用。

首先是自定義樣式和主題。在項(xiàng)目的res/values/目錄下添加styles.xml。如代碼清單1所示。

代碼清單1 styles.xml

<?xml version="1.0" encoding="utf-8"?>
    <resources>
    <!-- 定義my_style_1,沒有指定parent,用系統(tǒng)默認(rèn)的 -->
    <style name="my_style_1">
        <!-- 定義與指定View相關(guān)的若干屬性 -->
        <item name="android:hint">load from style 1</item>
    </style>

    <!-- 定義my_style_2,用自定義的my_style_1作為parent -->
    <style name="my_style_2" parent="@style/my_style_1">
        <!-- 定義與指定View相關(guān)的若干屬性 -->
        <item name="android:textSize">30sp</item>
        <item name="android:textColor">#FFFF0000</item>
        <item name="android:hint">load from style 2</item>
    </style>

    <!-- 定義my_style_3,用android的EditText作為parent -->
    <style name="my_style_3" parent="@android:style/Widget.EditText">
        <!-- 定義與指定View相關(guān)的若干屬性 -->
        <item name="android:hint">"load from style 3"</item>
        <item name="android:textStyle">bold|italic</item>
        <item name="android:typeface">monospace</item>
        <item name="android:background">@drawable/mybackground</item>
    </style>

    <!-- 定義MyTheme,用android的Theme作為parent -->
    <style name="MyTheme" parent="@android:style/Theme">
        <item name="android:textSize">20sp</item>
        <item name="android:textColor">#FF0000FF</item>
        <item name="android:hint">"load from style 3"</item>
        <item name="android:textStyle">bold|italic</item>
        <item name="android:typeface">monospace</item>
        <item name="android:background">@drawable/gallery_selected_pressed</item>
        <item name="myStyle">@style/my_style_3</item>
    </style>
    </resources>

由上述代碼可以看出,主題和樣式都可以通過在<style>下添加多個(gè)<item>來完成其定義。下面來介紹一下<style>的屬性,如表1所示。

表1 <style>的屬性

屬性名稱 描述
name style的名字,引用該style時(shí)使用此名字
parent 一些在自定義的style中沒有指定的屬性會(huì)繼承parent style中的值。parent可以是android預(yù)定義的resource,也可以是自己定義的style。為可選項(xiàng)

在<item>中定義需要改變的屬性值,例如,可以定義顏色、高度等。Android中能使用的屬性可以在<sdk>/docs/reference/android/R.styleable.html中查到;也可以用自己定義的屬性值。

下面講解如何在程序中使用樣式:一方面可以在layout的布局文件中指定自定義的樣式;另一方面可以在java代碼中指定。具體代碼如代碼清單2、3所示。

代碼清單2 在布局文件中指定自定義樣式

<EditText android:id="@+id/EditText03"
        style="@style/my_style_3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    </EditText>

代碼清單3 在java代碼中指定自定義樣式

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        LinearLayout ll = (LinearLayout)findViewById(R.id.main);

        EditText et = new EditText(this, null, R.attr.myStyle);//指定樣式
        ll.addView(et);
    }

如何在程序中使用自定義主題呢?這與使用自定義樣式相似,都可以通過兩個(gè)方法指定,不同的是主題除了可以在java代碼中指定以外,還可以在AndroidManifest中被指定。具體代碼如代碼清單4、5、6所示。

代碼清單4 在AndroidManifest.xml中指定自定義主題——應(yīng)用于整個(gè)程序

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

代碼清單5 在AndroidManifest.xml中指定自定義主題——應(yīng)用于Activity

<activity android:theme="@style/MyTheme">

代碼清單6 在java代碼中指定自定義主題

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTheme(R.style.MyTheme);//設(shè)置主題
        setContentView(R.layout.main);
    }

注:setTheme必須在setContentView(),addContentView()或inflate()等實(shí)例化View的函數(shù)之前調(diào)用。

 更多相關(guān)文章

·Android觸摸事件處理
·Android按鍵事件處理過程詳解
·Android系統(tǒng)菜單之快捷菜單
·Android系統(tǒng)菜單之子菜單
·Android系統(tǒng)菜單之選項(xiàng)菜單