我在ScrollView中放置了两个可触摸的TextView
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:isScrollContainer="false"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/restReviewRateText"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="@string/rest_review_rate_text"/>
<TextView
android:id="@+id/restReviewRateTextInc"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="@string/rest_review_rate_text_inc"/>
</LinearLayout>
</ScrollView>
onTouchEvent函数如下
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
case R.id.restReviewRateText:
case R.id.restReviewRateTextInc:
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
Log.d("MY TAG", "I am here DOWN!!");
} else if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
Log.d("MY TAG", "I am here UP!!");
}
break;
}
return false;
}
当页面在屏幕大小范围内时(例如页面不需要滚动),一切正常。我们可以检测到android.view.MotionEvent.ACTION_UP,无论我们在哪里触摸并抬起手。
然而,当页面尺寸大于屏幕尺寸时,当手触摸并移动时,页面滚动检测开始。在此期间,如果我们从TextView开始触摸,则可以检测到android.view.MotionEvent.ACTION_DOWN。然而,当我们移动(即滚动发生)时,触摸升起时未检测到android.view.MotionEvent.ACTION_UP。
即使滚动效果需要,我怎么能启用android.view.MotionEvent.ACTION_UP仍然可以检测到?或者有没有办法捕获用户在滚动动作开始后抬起手指(如果无法触发MotionEvent.ACTION_UP)?谢谢!
答案 0 :(得分:0)
经过一番探索,找到了解决我问题的方法。问题是android.view.MotionEvent.ACTION_UP现在在ScrollView上。所以为了解决这个问题,我在ScrollView(上面的代码片段)中添加了一个id
<ScrollView
android:id="@+id/reviewScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:isScrollContainer="false"
>
然后,我也将ScrollView注册到OnTouchListener。并在TOUCH UP时检测到它,如下所示
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
case R.id.restReviewRateText:
case R.id.restReviewRateTextInc:
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
Log.d("MY TAG", "I am here DOWN!!");
} else if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
Log.d("MY TAG", "I am here UP!!");
}
break;
case R.id.reviewScrollView:
if (event.getAction() == android.view.MotionEvent.ACTION_UP)
Log.d("MY TAG", "I am here UP!!");
break;
}
return false;
}
有了这个,我可以在完成ACTION_UP时执行所需的功能,无论是TextView还是ScrollView。