触摸或点击事件ViewPagerIndicator Android中事件、ViewPagerIndicator、Android

2023-09-05 00:09:10 作者:小确幸

可能是重复的:

Intercepting在ViewPagerIndicator触摸事件 Disabling &放大器;使分页ViewPager在Android的 android: ViewPager和Horizo​​ntalScrollVIew Intercepting touch events in ViewPagerIndicator Disabling & Enabling Paging In ViewPager in Android android: ViewPager and HorizontalScrollVIew

我使用 ViewPagerIndicator 在我的Andr​​oid应用程序的刷卡来看动态数量和它的工作的罚款。

I am using ViewPagerIndicator in my android app for swiping dynamic number of view and its working fine.

什么是希望?:当用户在幻灯片上其对应的视图将打开的点击。但我无法覆盖触摸事件上的寻呼机

What is want? When user click on one of the slide its corresponding view will open. But i am unable to override touch event on Pager.

活动code是:

public class MainActivity extends BaseSampleActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mAdapter = new TestFragmentAdapter(getSupportFragmentManager());

        mPager = (ViewPager)findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);

        mPager.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                System.out.print(event.getAction());//not working

                return false;
            }
        });

        mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
        mIndicator.setViewPager(mPager);
    }
}

我寻觅了很多,但没有找到妥善的解决办法。 但没有得到适当的和简单的答案

I have searched a lot but didn't found proper solution. But haven't got proper and brief answer

推荐答案

我也有同样的问题。首先,我创建了一个 CustomViewPager ,它扩展了 ViewPager

I also had a same issue. First I created a CustomViewPager, which extends ViewPager:

和覆盖 onTouch onInterceptTouch 事件:

    public class CustomViewPager extends ViewPager {


        public CustomViewPager(Context context, AttributeSet attrs) {
            super(context, attrs);
        }   

        @Override
        public boolean onInterceptTouchEvent(MotionEvent event) {

            return super.onInterceptTouchEvent(event);
        }

        @Override
        public boolean onTouchEvent(MotionEvent event){
            return super.onTountEvent(event);
        }

    }

你的XML应该是:

Your xml should be:

    <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="7" />

将其更改为

    <com.yourpackage.CustomViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="7" />

有关click事件使用 GestureDetector 。发送 MotionEvent 的tapGestureDetector。

For click event use GestureDetector. Sending MotionEvent to the tapGestureDetector.

tapGestureDetector = new GestureDetector(this, new TapGestureListener());

    viewPager.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                tapGestureDetector.onTouchEvent(event);
                return false;
            }
    });

据您正在使用兼容性库,就可以在第一行更改为:

It you are using the compatibility library, you can change the first line to:

tapGestureDetector = new GestureDetectorCompat(this, new TapGestureListener());

您可以处理在GestureListener的事件:

You can handle your Event in the GestureListener:

class TapGestureListener extends GestureDetector.SimpleOnGestureListener{

     @Override
     public boolean onSingleTapConfirmed(MotionEvent e) {
       // Your Code here
     }
}