【问题标题】:How to implement onTouchEvent() in a fragment?如何在片段中实现 onTouchEvent()?
【发布时间】:2017-01-30 03:34:54
【问题描述】:

在 Android 中,我需要在片段中使用 onTouchEvent()。如何在片段而不是 Activity 中使用此事件?

【问题讨论】:

    标签: android android-fragmentactivity fragmentmanager


    【解决方案1】:
    class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {
    
        private GestureDetector gestureDetector;
        private ClickListener clickListener;
    
        public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) {
            Log.d("TAG", "Constructer invoked");
            this.clickListener = clickListener;
            gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
                @Override
                public boolean onSingleTapUp(MotionEvent e) {
                    Log.d("TAG", "onSingleTapUp" + e);
                    return true;
                }
    
                @Override
                public void onLongPress(MotionEvent e) {
                    View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
                    if (child != null && clickListener != null) {
                        clickListener.onLongClick(child, recyclerView.getChildAdapterPosition(child));
                    }
                    Log.d("TAG", "onLongPress" + e);
                }
            });
        }
    
        @Override
        public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
            Log.d("TAG", "onInterceptTouchEvent" + gestureDetector.onTouchEvent(e) + " " + e);
    
            View child = rv.findChildViewUnder(e.getX(), e.getY());
            if (child != null&& gestureDetector.onTouchEvent(e)) {
                clickListener.onClick(child, rv.getChildAdapterPosition(child));
            }
            return false;
        }
    
        @Override
        public void onTouchEvent(RecyclerView rv, MotionEvent e) {
            Log.d("TAG", "onTouchEvent" + e);
        }
    
        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
    
        }
    }
    

    这个链接肯定会对你有所帮助-https://www.youtube.com/watch?v=RS7HIaRalhw

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-17
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      相关资源
      最近更新 更多