【发布时间】:2015-12-04 03:01:34
【问题描述】:
我有一个带有一系列线性布局文本视图的 ScrollView。当用户“触摸”其中一个文本视图时,我会临时更改背景颜色以“显示”触摸,以便他们可以直观地确认他们触摸的项目。当他们抬起手指时,我将背景颜色改回默认颜色。
我遇到了一个问题,如果他们用户滚动,ACTION_UP 似乎没有触发,因此 textview 的背景永远不会变回默认值。
我以为我通过向我的 TouchListener 添加一个 ACTION_MOVE 来修复它,这似乎更正了问题,但并非总是如此。
我的代码看起来像这样...
mytextview.setOnTouchListener(mytouch);
随着...
private View.OnTouchListener mytouch = new View.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
v.setBackgroundColor(getResources().getColor(R.color.mytouchcolor));
}
if (event.getAction() == MotionEvent.ACTION_UP) {
v.setBackgroundColor(getResources().getColor(R.color.mydefaultcolor));
}
if (event.getAction() == MotionEvent.ACTION_MOVE) {
v.setBackgroundColor(getResources().getColor(R.color.mydefaultcolor));
}
return false;
}
}
如果我...,则此代码可以工作
- 触摸并松开
- 触摸,慢慢滚动,然后松开。
如果我触摸并快速滚动(或轻弹),ACTION_UP 或 ACTION_MOVE 似乎永远不会触发(根据一些LOG.I() 测试。
如何解决此问题,以便在解除触摸后背景颜色始终返回默认值...滚动与否?
【问题讨论】:
标签: android action motionevent