Android ViewPager在华为手机中触发onClick事件,但未触发MotionEvent.ACTION\u
并添加了onclick侦听器,如下所示Android ViewPager在华为手机中触发onClick事件,但未触发MotionEvent.ACTION\u,android,android-viewpager,handler,Android,Android Viewpager,Handler,并添加了onclick侦听器,如下所示 viewPager.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if (motionEvent.getAction() =
viewPager.setOnTouchListener(
new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
moved = false;
System.out.println("clicked ACTION_DOWN");
}
if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
System.out.println("clicked ACTION_MOVE");
moved = true;
}
if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
if (!moved) {
System.out.println("clicked ACTION_UP");
view.performClick();
}
}
return false;
}
}
);
它在samsug手机上工作正常,但在华为手机上不会触发MotionEvent.ACTION\u UP。有人能帮忙吗?我用手势检测器解决了这个问题
viewPager.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
}
}
);
使用以下代码来处理此问题:
GestureDetector tapGestureDetector = new GestureDetector(getActivity(), new TapGestureListener());
setOnclickListener将在此处正常工作
class TapGestureListener extends GestureDetector.SimpleOnGestureListener{
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// Your Code here
System.out.println("hello");
if (e.getAction() == MotionEvent.ACTION_DOWN) {
moved = false;
viewPager.performClick();
System.out.println("clicked ACTION_DOWN");
}
if (e.getAction() == MotionEvent.ACTION_MOVE) {
System.out.println("clicked ACTION_MOVE");
moved = true;
}
if (e.getAction() == MotionEvent.ACTION_UP) {
if (!moved) {
System.out.println("clicked ACTION_UP");
}
}
return false;
}
}
}
你的意思是在华为手机中可以检测到动作移动和下降?是的,只有动作向上没有检测到。
viewPager.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
}
}
);