android如何設置控件的樣式 – Android移動開發技術文章_手機開發 Android移動開發教學課程

 

有時候我們不滿足於系統控件的外觀要改變一些背景,文字顏色等,這些屬性可以在代碼裡更改,隨便哪種控件,我們點,後面會出來一大串set開頭的方法。但是在代碼裡這樣改來改去還是比較麻煩的,如果同樣的控件多瞭,重復的代碼也比較多。控件的這些屬性也是可以在xml文件裡改的,同樣的控件多瞭,還是會帶來代碼的重復。這進我們就可以用設置控件樣子式的方法瞭。下面以EditText控件為例來說明如何來設置一個控件的樣式,工程序源碼可以在後面下載;

第一步建立一個新的工程,在main佈局裡面建立三個EditText控件。

第二步在工程的res/values文件夾下新建一個xml文件內容如下:

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <style name="et1" parent="@android:style/Widget.EditText">

        <item name="android:background">#1A4EA4</item>

        <item name="android:textColor">#FFF111</item>

    </style>

        <style name="et2" parent="@android:style/Widget.EditText">

        <item name="android:background">#A6C60F</item>

        <item name="android:textColor">#EC02C3</item>

    </style>

</resources>

<!–

說明:

    這裡建立瞭兩種樣式,從字面意思上可以看出這兩中樣式分別都更改瞭背景顏色和文字顏色

,一個控件可以更改的屬性有很多,這裡隻改瞭兩個,要改其它的屬性,我們要知道屬性的name,

才可以改。那所有的屬性的名字在哪呢?找瞭一番終於找到瞭,所有的屬性的名字在一個attrs.xml

文件裡。這個文件存在於:android sdk目錄\data\res\values 目錄下,找到這個文件以後我們

改某些屬性時可以做為查看的資料瞭。

    上面的兩個樣式中,都有一個parent屬性。這就不難理解style是可以繼承的。在這裡我們繼

承的是系統默認的EditText屬性,隻修改瞭背景和文字顏色而已。那系統的EditText樣式是在哪

定義的呢?找瞭一番終於也找到瞭,所有系統控件的樣式是在一個style.xml文件中,這個文件也

在上面說的那個目錄下。裡面我們可以找到Widget.EditText的樣式定義。有瞭它我們也可以查看

某一種控件可以更改哪些樣式瞭。

    在設置style時,我們經常用到@和?@表明引用的的資源是在一個項目或是系統框架中定義過

的。?表明引用的資源是在當前的主題定義過的。

    上面的設置背景中的值除瞭可以是顏色的值外,還可以是一個圖片的引用哦~~。

 

–>

 

 

第三步我們修改main佈局文件中EditText的屬性。為瞭對比,我們將第一個屬性將做改變,第二個的style屬性設為我們上面建立的name為et1的樣式。第三個的style屬性設為我們上面建立的name為et2的樣式,代碼如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent" android:layout_height="fill_parent"

    android:orientation="vertical">

    <EditText android:layout_width="fill_parent"

        android:layout_height="wrap_content" android:text="默認樣式" android:id="@+id/et1"></EditText>

    <EditText android:layout_width="fill_parent" android:id="@+id/et2"

        android:text="自定義樣式一" android:layout_height="wrap_content" style="@style/et1"></EditText>

    <EditText android:layout_width="fill_parent" android:id="@+id/et3"

        android:text="自定義樣式二" android:layout_height="wrap_content" style="@style/et2"></EditText>

    <Button android:text="改變主題" android:id="@+id/btn1"

        android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>

</LinearLayout>

 

 加瞭一個改變主題的按鈕是無效的,下一篇會用到它來設置主題。雖然定義好瞭style文件,但似乎並不能在java代碼裡設置,我沒有發現像setStyle()這樣的方法。所以就不 能在java代碼裡能過style文件動態改變控件的樣式, 不知道哪位仁兄可以解決此問題,特在此求教瞭。

 無圖無真相,下面是截圖:

 

工程文件打包:點我吧

 

作者 bausch

發佈留言