如何解决Android按钮问题
| 我正在尝试创建一个应用程序。当用户单击按钮时,它会被按下(图像已加载)。当他现在单击该按钮时,它不会被按下(图像已加载),依此类推。我正在使用下面的代码,问题是当我第三次单击未按下的按钮时,它不会再次进入按下状态。因此,在第一次单击时它被按下,在第二次单击时它未被按下,而在第三次单击时没有任何反应。 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);
}
});
}
});
解决方法
您可以这样做:
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。
, 哇...那是不必要的...
看一下顶部的ImageButton文档页面,了解如何使用选择器为不同的状态定义不同的图像。
http://developer.android.com/reference/android/widget/ImageButton.html
然后,在布局的xml中使用
android:background=\"@drawable/selectorfilename.xml\"
或类似的东西。
, 使用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侦听器中
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);
}
}
});
谢谢
迪帕克
, 无论您是否按下按钮,都必须先握住拳头。
如果按下该按钮,则您将进行该事件;否则,则进行其他操作。
所以对于我们的代码来说,像这样:
NameButton =(按钮)findViewById(R.id.Button01);
NameButton.setOnClickListener(new View.OnClickListener()
{
公共无效的onClick(View v)
{
如果(setPressed)
NameButton.setBackgroundResource(R.drawable.pressed);
其他
NameButton.setBackgroundResource(R.drawable.unpressed);
setPressed =!setPressed;
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。