昨天我注意到可以通过兼容性包将 Fragments 集成到旧的 API 级别中,但这对这个问题来说并不是真正必要的。 :)
我有一个带有 OnClickListener 的按钮
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
doSomething();
button.setPressed(true);
}
});
因为实际点击时,显示为按下,松开后,按钮状态为未按下,保持该状态。
有没有一种简单的方法可以在释放后保持按钮状态按下? 我首先想到的是某种计时器,但这似乎不合理。
最佳答案
请注意,这是因为 Android 在您的 onClickEvent
之前和之后都更改了 setPressed
,因此您自己更改它没有任何效果。解决此问题的另一种方法是使用 onTouchEvent
。
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// show interest in events resulting from ACTION_DOWN
if (event.getAction() == MotionEvent.ACTION_DOWN) return true;
// don't handle event unless its ACTION_UP so "doSomething()" only runs once.
if (event.getAction() != MotionEvent.ACTION_UP) return false;
doSomething();
button.setPressed(true);
return true;
}
});
关于android button setPressed after onClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5975168/