我想保持按下按钮。我想在 onTouch() 中使用另一种方式而不是onPressed ( )。我添加了 setPressed()、setSelected()但没有用。当我在onTouch()中添加这些方法时,程序很好,但我的动画很慢。
我可以在 onClick() 方法中使用这些方法,但可以在这个方法中使用吗?请为我解释
您可以在 -event 中设置按下状态,而不是使用将onClick
按钮返回到非按下状态的onTouch
-event:
yourbutton.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
((Button) v).setPressed(true);
//TODO: Add the code of your onClick-event here
}
return true;//Return true, so there will be no onClick-event
}
});
如果这会影响任何动画,您应该在那里寻找问题。
这段代码使按钮作为切换按钮工作。它将按下的属性设置为相反的。
如果按下按钮,则将其设置为未按下。如果按钮未按下,则设置为按下。
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Button b = ((Button) v);
b.setPressed(!b.isPressed());//if pressed, unpress; if unpressed, press
}
return true;
}
您所描述的似乎是一个切换按钮。也许您应该检查一下,而不是做一个骇人听闻的解决方案:
扩展切换按钮或:
Button button = (Button) view.findViewById(R.id.button1);
button.setTag(false);
button.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP)
if ((boolean) v.getTag()) {
v.setPressed(false);
v.setTag(false);
return false;
} else {
v.setPressed(true);
v.setTag(true);
return true;
}
return false;
}
});