按鈕由文字或/或圖示組成,用於傳達使用者動作 輕觸該選項。
您可以根據以下三種方式,在版面配置中建立按鈕: 以文字、圖示或兩者並用的方式呈現:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical" > <Button android:id="@+id/supabutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I'm a button" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="A tiny Android icon" android:src="@drawable/baseline_android_24" app:tint="#ff0000" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableStart="@drawable/baseline_android_24" android:drawablePadding="4dp" android:drawableTint="#ff0000" android:text="I'm a button with an icon" /> </LinearLayout>
先前的程式碼會產生類似下方的內容:
回應點擊事件
使用者輕觸按鈕時,
Button
物件收到
點擊事件。
如要透過程式輔助方式宣告事件處理常式,請建立
View.OnClickListener
物件,然後呼叫
setOnClickListener(View.OnClickListener)
,
如以下範例所示:
Kotlin
findViewById<Button>(R.id.supabutton) .setOnClickListener { Log.d("BUTTONS", "User tapped the Supabutton") }
Java
Button button = (Button) findViewById(R.id.supabutton); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Log.d("BUTTONS", "User tapped the Supabutton"); } });
設定按鈕樣式
按鈕 (背景圖片和字型) 的外觀會因裝置而異 因為不同製造商的裝置通常有不同的輸入樣式 控制項
如要自訂不同背景的個別按鈕,請指定
android:background
個屬性
並包含可繪項目或顏色資源。或者,您也可以為按鈕套用樣式。
與 HTML 樣式類似
定義多個樣式屬性,例如背景
字型和大小如要進一步瞭解如何套用樣式,請參閱
樣式與主題:
無邊框按鈕
「無邊框」按鈕是一項實用的設計。無邊框按鈕與基本按鈕類似 但不含邊框或背景,但在不同狀態下仍會變更外觀。 例如輕觸畫面時
如要建立無邊框按鈕,請套用
borderlessButtonStyle
按鈕的樣式,如以下範例所示:
<Button android:id="@+id/supabutton" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I'm a button" />
自訂背景
如要確實重新定義按鈕的外觀,可以指定自訂背景。 然而,您提供的背景必須是狀態清單,而非提供簡單的點陣圖或顏色 會根據按鈕目前的狀態變更外觀的資源。
您可以在 XML 檔案中定義狀態清單,以定義要用於 不同的按鈕狀態
如要為按鈕背景建立可繪製的狀態清單,請按照下列步驟操作:
- 為按鈕背景建立三個點陣圖,代表預設、輕觸和聚焦 按鈕狀態。如果要確保您的圖片適用於不同大小的按鈕,請以 nine-patch 點陣圖。
- 將點陣圖放入專案的
res/drawable/
目錄。為每個點陣圖命名 以反映按鈕代表的按鈕狀態,例如button_default.9.png
button_pressed.9.png
和button_focused.9.png
。 - 在
res/drawable/
目錄中建立新的 XML 檔案。例如:button_custom.xml
。按照下列方式插入 XML:<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button_pressed" android:state_pressed="true" /> <item android:drawable="@drawable/button_focused" android:state_focused="true" /> <item android:drawable="@drawable/button_default" /> </selector>
這會定義單一可繪製資源,該資源會根據目前的 。
- 第一個
<item>
定義輕觸按鈕時要使用的點陣圖 (已啟用)。 - 第二個
<item>
會定義聚焦按鈕時要使用的點陣圖,例如 例如使用軌跡球或方向鍵。 - 第三個
<item>
定義在按鈕為預設值時要使用的點陣圖 未輕觸或聚焦。
這個 XML 檔案代表單一可繪製資源。當
Button
參照: 背景會根據按鈕狀態變更顯示的圖片。 - 第一個
- 套用可繪製 XML 檔案做為按鈕背景:
<Button android:id="@+id/button_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" android:background="@drawable/button_custom" />
如要進一步瞭解這個 XML 語法,包括如何定義停用的按鈕,
或處於其他狀態的內容
StateListDrawable
。