0

常规按钮在按下时会改变其外观。即使在按钮被释放后,我如何才能保持按钮上的这种“按下”外观?

4

3 回答 3

1

如果您不想使用 ToggleButton,可能的解决方案是在 onClickListener 中设置布尔值

   private boolean isPressed = false;


    mYourButton.setOnClickListener(new OnClickListener(){

           @Override
            public void onClick(){

                 if(isPressed==false){

                    mYourButton.setBackgroundResource(R.drawable.your_pressed_image);
                    isPressed=true;

                 }else if(isPressed==true){

                      mYourButton.setBackgroundResource(R.drawable.your_default_image);
                      isPressed=false;

                  }
               }
          });
于 2013-06-24T11:43:16.383 回答
1

有办法做到这一点,我建议通过可绘制和布局文件。

例如,您有一个视图,其中有一个“ SEND ”或“ FINISH BUTTON ”,因此文件夹布局中的视图如下所示:

<ImageButton
android:id="@+id/btnIdNext"
android:contentDescription="@string/someDescriptionOfImage"
android:layout_width="wrap_content"
android:layout_marginTop="10dp"
android:layout_height="wrap_content"
android:src="@drawable/buttons_src"
android:background="@drawable/buttons"
android:onClick="someaction" />

如您所见,您有两个重要的可绘制对象,即 src 和背景。所以,让我们创建这些文件

在drawable文件夹中,我们创建buttons_src.xml文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/finalizar_active" android:state_pressed="true"/>
    <item android:drawable="@drawable/finalizar"/>
</selector>

在drawable文件夹中,我们也创建了buttons.xml文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/bg_purple_active" android:state_pressed="true"/>
    <item android:drawable="@drawable/bg_purple"/>
</selector>

我们得到的是四个图像,两个用于未按下状态,两个用于按下状态。

接下来预览:

*未按下按钮 http://i.stack.imgur.com/UZMtt.png

*按下按钮 http://i.stack.imgur.com/1E0u4.png

于 2013-08-12T20:31:20.410 回答
0

您可以使用ToggleButton而不是常规按钮,它会在按下后保存状态。

只需使用 a 为其分配按下和未按下的selector纹理,按下后它会保存按下的纹理。

于 2013-06-24T11:40:25.900 回答