Android Developers:按钮
按鈕是有文本或者圖標(或者文本和圖標)組成,它傳達用戶觸摸它的時候所發生的動作。?
?
你可以在你的布局中使用三種方式創建按鈕,取決于你是否想創建文本按鈕,突變按鈕或者兩者都有:?
-
設置文本,使用Button類:?
?
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_text" ... />?
-
設置圖標,使用ImageButton類:?
?
<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/button_icon" ... />?
-
設置文本和圖標,使用Button類的android:drawableLeft屬性:?
?
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_text" android:drawableLeft="@drawable/button_icon" ... />?
?
響應點擊事件?
——————————————————————————————————————————————?
當用戶點擊一個按鈕,button對象獲取一個on-click時間。?
??
為按鈕定義時間處理程序,在你的XML布局中的<Button>元素添加android:onClick屬性。這個屬性的值必須和你想調用響應點擊事件的方法的名稱相同。顯示這個布局的Activity必須然后實現相應的方法。?
?
例如,下面是一個布局,包含一個使用android:onClick屬性的按鈕:?
?
<?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/button_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" /> 在顯示這個布局的Activity中,下面的方法處理這個點擊事件: ??
?
/** Called when the user touches the button */ public void sendMessage(View view) { // Do something in response to button click } 你在android:onClick屬性中宣布的方法,必須和上面所顯示有擁有相同的名稱。 ?特別的,這個方法必須: ??
-
是public?
-
返回void?
-
定義一個View對象,作為唯一的參數(它將是被點擊的View對象)?
?
使用OnClickListener?
——————————————————————————————————————————————?
你也可以更務實的聲明點擊時間,而不是在一個XML布局文件中。如果你在運行時實例化Button對象或者你需要在Fragmetn的子類中聲明點擊行為,這個可能就是必須的。?
???????
編程聲明事件處理,創建一個View.onClickListener對象,并且通過調用setOnClickListener(View.OnClickListener)方法將它指派給按鈕。例如:?
?
Button button = (Button) findViewById(R.id.button_send); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Do something in response to button click } }); 設計你的按鈕 ??
——————————————————————————————————————————————?
?你的按鈕的外表(背景圖片和前段)可能從一臺設備到另一個而不同,因為不同制造廠商的設備通常擁有不同的默認輸入控件風格。?
?
你可以精確控制你的控件使用的樣式主題,你將它應用在你的整個應用。例如,為了在你的應用程序匯中,確保所有運行Android?4.0和以上的設備使用Holo主題,在你的Mainfest文件中的<application>元素中聲明android:theme=”@android:style/Theme.Hoho“。你也可以參閱博客Holo?Everywhere信息,關于使用Holo主題支持老的設備。?
?
為了使用不同的背景自定義自己的按鈕,使用一個Drawable或者Color資源指定android:background屬性。作為另外一種選擇,你可以為按鈕設置一種樣式,它的工作方式類似于HTML樣式,定義如背景,字體,大小和其它等多種樣式屬性。關于應用樣式的更多的信息,請查閱Stypes and Themes。?
?
無邊框按鈕?
——————————————————————————————————————————————?
一種非常有用的設計師”無邊框“按鈕。無邊框按鈕類似于基本的按鈕,除了他們沒有邊框或者背景,但是當不同的狀態的時候一直改變顯示,例如當它被點擊的時候。?
?
為了創建一個無邊框的按鈕,給按鈕應用borderlessButtonStyle屬性,例如:?
?
<Button android:id="@+id/button_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" style="?android:attr/borderlessButtonStyle" /> 自定義背景 ??
——————————————————————————————————————————————————?
如果你想真正定義你的按鈕的外表,你可以指定自定義的背景。替代應用簡單的位圖或顏色,然而,你的背景應該是一個state?list?resource,它基于按鈕當前的狀態改變顯示。?
?
你可以在XML文件當中定義state?list,定義三種不同的圖片或者顏色用于不同的按鈕狀態。?
?
為你的按鈕創建一個state?list?drawable:?
為你的按鈕的背景創作三個位圖,它代表default,pressed和focused按鈕狀態。為了去確保你的圖片適應按鈕的各種大小,創建Nine-path位圖。?
將位圖放于你的項目的/res/drawable目錄下。確保每個位圖被合適的命名,去映射按鈕的每一種顯示狀態,例如button_default.9.png,button_pressed.9.png和button_focused.9.png。?
創建一個xml文件,在res/drawable/目錄下(命令如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>定義了用于按鈕被點擊的時候的位圖(Activited)?
-
第二個<item>定義了用于按鈕獲取焦點的時候的位圖(當用戶滾動球或方向鍵高亮顯示按鈕時)?
-
第三個<item>定義了用于按鈕默認狀態的時候的位圖(既沒有被點擊也沒有獲取焦點)?
?
注意:<item>元素的順序是重要的。當位圖被引用的時候,<item>元素遍歷順序來決定哪個適合當前的按鈕的狀態。因為默認的位圖是在最后,只有當android:state_pressed和android:state_focused的狀態都被認為false的時候才使用。?
?
XML文件現在代表一個單獨的位圖資源,并且被一個Button作為它的background引用,圖片將會基于三種狀態而改變。?
?
?????4. ??然后簡單將drawable?XML文件應用于Button?bakgroud:?
?
<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語法的更多信息,包含如何定義一個不可用的,循環的,或者其它按鈕狀態,閱讀State?List?Drawable。 ??
轉載于:https://www.cnblogs.com/suncoolcat/p/3424092.html
總結
以上是生活随笔為你收集整理的Android Developers:按钮的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Struts2学习入门
- 下一篇: eclipse run as 后边没有j