我很生气,却不明白我犯了什么错误,请帮忙。
我的布局xml中有ViewPager
,此寻呼机我有一个FragmentStatePagerAdapter
。基本上我在ViewPager
上加载不同的片段。
但是片段的数量将由用户决定某些操作,并且从ViewPager
开始不会加载任何片段,我的意思是FragmentStatePagerAdapter
计数将为0。
现在我希望用户长按ViewPager
来触发某些操作。但是当我向viewpager OnLongClickListener
添加onLongClick
时,方法永远不会触发:(
这是我的代码,
pageView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Log.d("sandeep","YES");
return false;
}
});
这里有什么错误?请帮忙。提前谢谢。
答案 0 :(得分:1)
OnClickListener
和OnLongClickListener
无法与ViewPager
本身一起使用,因为它捕获触摸事件以便能够在页面之间滚动。
您应该设置onTouchListener,捕获ACTION_UP
运动事件。当寻呼机有项目时,不要忘记删除监听器。
答案 1 :(得分:0)
在viewPager上,您可以设置OnTouchListener以使gestureDetector用于longpress检测。 但我建议你在加载到viewpager中的片段父布局上使用它。
public class MainActivity extends Activity {
private static final String DEBUG_TAG = "Gestures";
private GestureDetectorCompat mDetector;
// Called when the activity is first created.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Instantiate the gesture detector with the
// application context and an implementation of
// GestureDetector.OnGestureListener
mDetector = new GestureDetectorCompat(this,new Gesture());
yourViewPager.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return mDetector.onTouchEvent(event);
}
});
}
class Gesture extends GestureDetector.SimpleOnGestureListener{
public boolean onSingleTapUp(MotionEvent ev) {
}
public void onLongPress(MotionEvent ev) {
//your long press code here
}
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
}
}
}