android如何設定控制項的樣式

來源:互聯網
上載者:User

有時候我們不滿足於系統控制項的外觀要改變一些背景,文字顏色等,這些屬性可以在代碼裡更改,隨便哪種控制項,我們點,後面會出來一大串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檔案動態改變控制項的樣式, 不知道哪位仁兄可以解決此問題,特在此求教了。

 無圖無真相,下面是:

工程檔案打包:點我吧

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.