2011年10月19日 星期三

Android學習_自訂樣式_以按鈕為例(加上改變文字)

經過Android學習_自訂樣式_以按鈕為例的設定,可以將按鈕的背景改變,但很多時候我們會希望連同按鈕上面的字一同變化,那就必須要做多一點的設定:

1. 先經由前篇,完成背景設定的XML檔案(C步驟)

2. 新開一個於Drawable的文字設定檔

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:color="#777777" />
<item android:state_pressed="true" android:color="#1559B0" />
<item android:state_enabled="false" android:color="#ffffff" />
</selector>


3. 於res\values內的resources標籤內,加入style的設定描述

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Button" parent="@android:style/Widget.Button">
<item name="android:gravity">center_vertical|center_horizontal</item>
<item name="android:textColor">@drawable/btn_textcolor_selector</item>
<item name="android:shadowColor">#FF000000</item>
<item name="android:shadowDx">1</item>
<item name="android:shadowDy">2</item>
<item name="android:shadowRadius">0.2</item>
<item name="android:textSize">20dip</item>
<item name="android:textStyle">bold</item>
<item name="android:background">@drawable/btn_selector</item>
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
</style>
</resources>

重點有兩個地方,textColor與background都是去讀取步驟1與2的設定檔,也就是按鈕按下時,背景會隨著背景設定檔改變,而文字則會依照文字設定檔改變,至於有沒有合併的撰寫方式,初步是沒有測出其他方式。

4. 最後,在按鈕的屬性上設定style

<Button
android:id="@+id/btn_main_Login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登入"
style="@style/Button"
></Button>


可以注意到一件事情,drawable的每一個設定,都是一個XML檔案,但Style卻是一個標籤,所以可以將很多Style都放在同一個resources標籤內。

沒有留言:

張貼留言