Share via


自訂按鈕

在本節中,您將使用 Button Widget 和 XML 檔案,建立具有自定義影像而非文字的按鈕,該檔案會定義三個不同的影像以用於不同的按鈕狀態。 按下按鈕時,會顯示簡短訊息。

以滑鼠右鍵按下並下載下方的三個映像,然後將它們 複製到您專案的 Resources/drawable 目錄。 這些將用於不同的按鈕狀態。

Green Android icon for normal stateOrange Android icon for focused stateYellow Android icon for pressed state

在名為 android_button.xmlResources/drawable 目錄中建立新的檔案。 插入下列 XML:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/android_pressed"
          android:state_pressed="true" />
    <item android:drawable="@drawable/android_focused"
          android:state_focused="true" />
    <item android:drawable="@drawable/android_normal" />
</selector>

這會定義單一可繪製的資源,這會根據按鈕的目前狀態來變更其影像。 第一個<item>定義android_pressed.png為按下按鈕時的影像(它已啟動):第二個<item>定義android_focused.png做為當按鈕焦點時的圖像(當按鈕使用軌跡球或方向板醒目提示時),第三<item>個定義android_normal.png做為正常狀態的影像(未按下或聚焦時)。 這個 XML 檔案現在代表單一可繪製的資源,當針對 Button 其背景參考時,顯示的影像將會根據這三種狀態而變更。

注意

元素的順序 <item> 很重要。 參考此可繪製時, <item>會周遊 s,以判斷哪一個適用於目前按鈕狀態。 因為「一般」影像是最後一個,所以只有在條件 android:state_pressedandroid:state_focused 兩者都評估為 false 時才會套用。

開啟 Resources/layout/Main.axml 檔案並新增 Button 元素:

<Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:background="@drawable/android_button" />

屬性 android:background 會指定要用於按鈕背景的可繪製資源(當儲存在 Resources/drawable/android.xml 時,會參考為 @drawable/android)。 這會取代整個系統用於按鈕的一般背景影像。 為了讓可繪製者根據按鈕狀態變更其影像,影像必須套用至背景。

若要讓按鈕在按下時執行動作,請在結尾新增下列程序代碼 OnCreate() 方法:

Button button = FindViewById<Button>(Resource.Id.button);

button.Click += (o, e) => {
    Toast.MakeText (this, "Beep Boop", ToastLength.Short).Show ();
};

這會從配置擷取 Button ,然後在按兩下 時Button新增Toast要顯示的訊息。

現在執行應用程式。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。