Android按钮问题

时间:2011-05-30 06:34:29

标签: android button

我正在尝试创建一个应用。当用户点击按钮时,它会被按下(图像被加载)。当他现在点击按钮时,它会被取消(图像被加载),依此类推。我正在使用下面的代码,问题是当我第三次点击未按下按钮时它再次没有进入按下状态。因此,首先点击它会被按下,在第二次点击时它会被取消,在第3次点击时没有任何反应。

 NameButton = (Button)findViewById(R.id.Button01);
        NameButton.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {
                NameButton.setBackgroundResource(R.drawable.pressed);
                NameButton.setOnClickListener(new View.OnClickListener() 
                {
                    public void onClick(View v) 
                    {
                        NameButton.setBackgroundResource(R.drawable.unpressed);
                    }
                });

            }
        });

4 个答案:

答案 0 :(得分:2)

您可以这样做:

    NameButton = (Button)findViewById(R.id.Button01);
    NameButton.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v) 
        {
            if (setPressed)
                NameButton.setBackgroundResource(R.drawable.pressed);
            else
                NameButton.setBackgroundResource(R.drawable.unpressed);
            setPressed = !setPressed;
        }
    });

并将布尔变量setPressed作为成员变量。

或者,请考虑使用ToggleButton

答案 1 :(得分:1)

哇...那是相当不必要的......

查看顶部的ImageButton文档页面,了解如何使用选择器为不同的状态定义不同的图像。

http://developer.android.com/reference/android/widget/ImageButton.html

然后在你的布局的xml中,你将使用

android:background="@drawable/selectorfilename.xml"

或类似的东西。

答案 2 :(得分:0)

使用setTag()getTag()方法获取按钮标记。根据标签设置按钮的背景。在xml中也使用android:tag

XML中的

<Button 
    android:id="@+id/openpdfbutton"
   android:layout_width="100dip"
  android:layout_height="60dip"
  android:text="Click"
  android:background="@drawable/cancelfocus"
  android:tag="@drawable/cancelfocus"
  />
OnClick Listener中的

NameButton = (Button)findViewById(R.id.Button01);
        NameButton.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {

if(NameButton.getTag().equals(R.drawable.cancelfocus)){

    NameButton.setBackgroundResource(R.drawable.cancel_unfocus);
    NameButton.setTag(R.drawable.cancel_unfocus);
    }else{
        System.out.println("...UnFocus Button clicked...");
        NameButton.setBackgroundResource(R.drawable.cancelfocus);
        NameButton.setTag(R.drawable.cancelfocus);
    }

        }
    });

由于 迪帕克

答案 3 :(得分:0)

你必须打开那个按钮是否持续的状态。 如果按下那个按钮然后你做那些事件,如果没有,那么其他部分.. 所以你的代码是这样的: -

NameButton =(Button)findViewById(R.id.Button01);     NameButton.setOnClickListener(new View.OnClickListener()     {         public void onClick(查看v)         {             if(setPressed)                 NameButton.setBackgroundResource(R.drawable.pressed);             其他                 NameButton.setBackgroundResource(R.drawable.unpressed);             setPressed =!setPressed;         }     });