将按钮状态更改为按下

时间:2013-08-23 05:05:52

标签: android button state

我想要实现的目标:当第一次按下该按钮时,它应该突出显示/激活/按下。在第二次单击按钮时,它应该被取消激活/不被按下。 后来我想检查一下按钮是否按下了,做点什么。

我尝试了什么:

@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

5 个答案:

答案 0 :(得分: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 :(得分: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" />

在drawable目录中创建一个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>

答案 2 :(得分:1)

XML CODE:

   <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="" />    

在drawable中:

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();

            }
            }

答案 3 :(得分: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>

然后将其作为背景参数分配给您的按钮。

答案 4 :(得分:1)

使用选择器如:   在drawable文件夹中创建一个新的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>

!!快乐的编码!!