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

4

5 回答 5

2

您可以尝试通过这种方式在单击时更改按钮的背景状态将图像设置为背景

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

});
于 2013-08-23T05:11:34.353 回答
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>
于 2013-08-23T05:11:39.820 回答
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();

            }
            }
于 2013-08-23T05:15:46.097 回答
1

您还可以为您的 Button 定义一个 Selector 以自定义突出显示,因此您可以创建一个 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>

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

于 2013-08-23T05:16:23.307 回答
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>

!!快乐编码!!

于 2013-08-23T05:18:13.850 回答