2013-08-23 118 views
0

我試圖實現的是:當第一次按下該按鈕時,它應該被突出顯示/激活/按下。在第二次點擊按鈕時,它應該被取消激活/未按下。 和更高版本我想檢查一下,如果按鈕被按下,請執行一些操作。將按鈕的狀態更改爲按下

我的嘗試:

@Override 
public boolean onTouch(View v, MotionEvent event) { 

    switch (v.getId()) { 

    case R.id.day_button: 
     if (v.isPressed() == true) { 
      v.setPressed(false); 
     } else if (v.isPressed() == false) { 
      v.setPressed(true); 
     } 
     return true; 

我試圖與day_but.isPressed == true也。

回答

1

可以使用切換按鈕。欲瞭解更多信息,請致電http://developer.android.com/guide/topics/ui/controls/togglebutton.html

<ToggleButton 
    android:id="@+id/togglebutton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textOn="Vibrate on" 
    android:textOff="Vibrate off" 
    android:onClick="onToggleClicked"/> 

或者您可以遵循另一種方法。你可以在你的按鈕中應用樣式。

<Button 
    android:id="@+id/button1" 
    style="@button_style/<StyleName>" 
    android:layout_width="200dp" 
    android:layout_height="126dp" 
    android:text="Hello" /> 

創建繪製目錄中的文件button_style.xml

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

    <item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item> 
    <item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item> 
    <item android:drawable="@drawable/numpad_button_bg_normal"></item> 

</selector> 
+0

我會嘗試使用切換按鈕然後..謝謝你:) – Eriz

1

你可以用這種方式嘗試改變按鈕的背景狀態下點擊設置圖片爲背景

Button testButton = (Button) findViewById(R.id.buttonTestButton); 
int status = 0;//GLOBAL VARIABLE : the status of the Button (0 or 1) 
testButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     //toggle picture 
     if (status == 0) { 
      testButton.setBackgroundResource(R.drawable.alternatepicture); 
      status=1 ; // change the status to 1 so the at the second clic , the else will be executed 
     } 

     else { 
      testButton.setBackgroundResource(R.drawable.fakpicture); 
      status =0;//change the status to 0 so the at the second clic , the if will be executed 
     } 
    }//end void onClick 

}); 
1

XML代碼:

<ToggleButton 
      android:id="@+id/btspeaker" 
      android:layout_width="100dp" 
      android:layout_height="70dp" 
      android:layout_marginRight="20dp" 
      android:background="@drawable/bgspeaker" 
      android:button="@null" 
      android:textOff="" 
      android:textOn="" />  

在繪製:

bgspeaker.xml

<?xml version="1.0" encoding="UTF-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/speaker_btn_select" android:state_checked="true"/> 
<item android:drawable="@drawable/speaker_btn" android:state_checked="false"/> 
<item android:drawable="@drawable/speaker_btn"></item> 
</selector> 

在活動:

if (v.getId() == R.id.btspeaker) { 
      if (btspeaker.isChecked()) { 
       Toast.makeText(context, "Pressed/Selected", 
         Toast.LENGTH_LONG).show(); 

      } else { 

       Toast.makeText(context,"UnSelected", 
         Toast.LENGTH_LONG).show(); 

      } 
      } 
1

您還可以定義一個選擇你的按鈕,自定義突出,所以您創建,然後一個xml文件:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_pressed="false" android:state_enabled="true" 
     android:state_focused="false" android:drawable="@drawable/enable_notpressed" /> 
<item android:state_pressed="true" android:state_enabled="true" 
     android:drawable="@drawable/enable_pressed" /> 
<item android:state_pressed="false" android:state_enabled="false" 
     android:state_focused="false" android:drawable="@drawable/disabled" /> 
</selector> 

然後將其分配給你的背景按鈕PARAM。

1

使用選擇器如: 在可繪製文件夾中創建一個新的xml文件並粘貼此代碼並相應地更改值。

 <padding 
      android:left="10dp" 
      android:top="2dp" 
      android:right="10dp" 
      android:bottom="2dp" /> 
    </shape> 
</item> 
<item> 
    <shape> 
     <gradient 
      android:startColor="#003040" 
      android:endColor="#003040" 
      android:angle="180" /> 
        <corners 
      android:radius="8dp" /> 

     <padding 
      android:left="10dp" 
      android:top="2dp" 
      android:right="10dp" 
      android:bottom="2dp" /> 
    </shape> 
</item> 

</selector> 

!快樂編碼!