2012-02-22 35 views
0

所以我有一個圖像按鈕,我想在它上面有兩個狀態。它將像書籤按鈕那樣工作,它有兩種狀態。如果用戶按下按鈕,則它會更改圖像,如果它再次按下該按鈕,則我需要返回原始圖像。什麼樣的按鈕可以在Android中切換/更改狀態?

這可能嗎?有沒有更簡單的方法使用另一種類型的按鈕? 謝謝

+2

友好的建議:爲您的問題添加一些更多的細節。特別是,標題有點混亂。 – 2012-02-22 21:31:41

+0

嘗試使用您自己的自定義CSS的按鈕? – uday 2012-02-22 21:32:55

+0

對不起大家..修改標題 – 2012-02-22 21:50:58

回答

2

嘗試將主題更改爲:「什麼樣的按鈕可以切換/更改狀態?」

好像你需要ToggleBotton

<ToggleButton     
     android:layout_width="wrap_content" 
     android:layout_height="26dp" 
     android:background="@color/button_colors" 
     android:button="@null" 
     android:textOff="@null" 
     android:textOn="@null" /> 

而這個XML定義的顏色/在休息/按下狀態按鈕的圖片,把它放在res/color/button_colors.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_checked="false" android:drawable="@drawable/button_rest"/> 
<item android:state_checked="true" android:drawable="@drawable/button_on" />  
</selector> 
+0

謝謝。所以在那之後,我只需要附加一個監聽器並設置操作。我可以獲得按鈕的狀態?並根據我可以執行的操作。 – 2012-02-28 01:26:02

0

是的,你可以使用普通的按鈕也。首先在res/drawable目錄中創建一個選擇器XML文件。例如:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_enabled="true" android:state_selected="true" 
android:drawable="@drawable/selectedimage"/> 

<item android:state_enabled="true" android:state_selected="false" 
android:drawable="@drawable/notselectedimage"/> 

</selector> 

在佈局XML按鈕定義,你只需要添加這個屬性:

android:background="@drawable/myselectorxmlfile" 

然後你編程設置選擇的狀態自己(在onClickListener)和按鈕圖像會改變背景狀態。

button.setSelected(true) // or false; 
0

我想你可以使用切換按鈕,並希望它會解決您的問題。 只要看看它的一個簡單的XML代碼:

<ToggleButton 
       android:id="@+id/tglbtn" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textOn="ON" 
       android:textOff="OFF" 
       /> 

,只是檢查在這個環節在這裏給出了答案: Android: Specify two different images for togglebutton using XML

此外, 我已經張貼有關切換按鈕的簡單教程。只要看看我的謙虛博客,如果你覺得它有幫助。這裏是鏈接:http://androiddesk.wordpress.com/2012/03/10/toggle-button-in-android/