我正在尝试创建一个应用。当用户点击按钮时,它会被按下(图像被加载)。当他现在点击按钮时,它会被取消(图像被加载),依此类推。我正在使用下面的代码,问题是当我第三次点击未按下按钮时它再次没有进入按下状态。因此,首先点击它会被按下,在第二次点击时它会被取消,在第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);
}
});
}
});
答案 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
<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; } });