按下时如何切换按钮的状态

时间:2013-05-20 18:18:30

标签: android android-intent android-emulator android-listview

我是android的新手并尝试了一些功能。我有一个xml文件,在按下按钮时调用:

<?xml version="1.0" encoding="utf-8"?>


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

如何编辑此代码,以便在按下某个按钮时,它会一直处于该状态,直到再次单击它,然后再恢复到之前的状态?

3 个答案:

答案 0 :(得分:1)

您应该按照existing answer

中的说明将ToggleButton与选中的背景结合使用
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/selected_image"
          android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/unselected_image"
        android:state_checked="false"/>

 </selector>

答案 1 :(得分:1)

尝试在java类中修复它。为按钮选择时和未选中按钮时添加标记,然后在选择按钮或打开窗口时添加按下状态的图像,并在关闭时添加图像,以便在未按下时添加图像。

答案 2 :(得分:0)

如果您选择以编程方式执行此操作,则可以这样做,

boolean flag = true;

Button button = (Button) findViewById(R.id.button_id);
         button.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
            if(flag){
                 button.setBackgroundResource(R.drawable.clickedonce);
                 flag = false;
            }else{
                 button.setBackgroundResource(R.drawable.clickedtwice);
                 flag = true;
           }
         }
     });

也许有帮助。