2012-05-06 152 views
6

我在layout中創建了button。在Drawable文件夾中,我創建了一個名爲btn01_stateXML file。該btn01_state.xml分配給我通過「android:[email protected]/btn01_state如何每次點擊更改按鈕的圖像?

現在創建button,該button有一個默認image img1.when我clickbutton,則此搜索改變IMG2,有一次我鬆開點擊的鼠標按鈕時, image2再次更改爲img1。

我想要做的是,用evey點擊更改按鈕的圖像。

用於例如,最初 btn01具有IMG01

如果btn01按下==>組btn01 IMG到img02和直到btn01再次按下保持img02。現在,btn01上有img02。

按btn01時,將img01設置爲btn01。

我希望這個澄清更多我想要做的。

btn_selector

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/android_blue" 
     android:state_pressed="true" /> 
<item android:drawable="@drawable/ic_launcher" 
     android:state_focused="true" /> 
<item android:drawable="@drawable/ic_launcher" /> 

main.xml中

<Button 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:id="@+id/btn01" 
    android:background="@drawable/btn01_state"/> 

回答

17

您可以在代碼中輕鬆地做到這一點。

boolean isPressed = false; 
button.setOnClickListener(buttonListener); 

OnClickListener buttonListener = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if(isPressed) 
      button.setBackgroundResource(R.drawable.icon1); 
     else 
      button.setBackgroundResource(R.drawable.icon2); 

     isPressed = !isPressed; 
    } 
}; 
+0

perfect ..... :) – Androelpha

+0

不適用於我。它僅在按下按鈕時調用onClick,而不在釋放按鈕時調用。所以它只會在每次點擊時做一個分支。 –

+0

@ ZdravkoDonev - 這是因爲op要求如何用點擊來更改按鈕圖像,而不是觸摸。如果你想改變按鈕狀態,你應該檢查這個鏈接 - http://stackoverflow.com/a/14024007/1376688 –

0

讓它在代碼中可能。把一個監聽器放在按鈕上,當按鈕被點擊時,背景被改變。

1

簡單的方式

btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
    btn.setBackgroundDrawable(getResources().getDrawable(R.drawable.locationbutton_on)); 
       } 
     }); 
相關問題