在Android中查看分页器上的Onclick在我的代码中不起作用

时间:2014-02-18 06:18:55

标签: android view android-viewpager

我在我的代码中实现了视图寻呼机,我在视图寻呼机上放置了点击式监听器,但是我的点击式监听器无效,我将发布我的代码

viewpager.setOnClickListener(new OnClickListener() 
{
    @Override
    public void onClick(View v) 
    {
        Log.i("***","***");
        Toast.makeText(getActivity(), "XXXX", Toast.LENGTH_SHORT).show();
    }
});

3 个答案:

答案 0 :(得分:9)

我实施了自定义ViewPager

public class ClickableViewPager extends ViewPager {

    private OnClickListener mOnClickListener;

    public ClickableViewPager(Context context) {
        super(context);

        setup();
    }

    public ClickableViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);

        setup();
    }

    private void setup() {
        final GestureDetector tapGestureDetector = new GestureDetector(getContext(), new TapGestureListener());

        setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                tapGestureDetector.onTouchEvent(event);

                return false;
            }
        });
    }

    public void setOnViewPagerClickListener(OnClickListener onClickListener) {
        mOnClickListener = onClickListener;
    }

    public interface OnClickListener {
        void onViewPagerClick(ViewPager viewPager);
    }

    private class TapGestureListener extends GestureDetector.SimpleOnGestureListener {

        @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            if(mOnClickListener != null) {
               mOnClickListener.onViewPagerClick(ClickableViewPager.this);
            }

            return true;
        }
    }
}

示例如何实现onClickListener

ClickableViewPager viewPager = (ClickableViewPager) findViewById(R.id.viewPager);
mViewPager.setOnViewPagerClickListener(new ClickableViewPager.OnClickListener() {
            @Override
            public void onViewPagerClick(ViewPager viewPager) {
                //yourCode
            }
        });

答案 1 :(得分:7)

ViewPager 项目中使用 clicklistener 。这是行不通的,因为ViewPager的Child正在拦截父节点的事件(即ViewPager)。 E.G如果您使用PagerAdapter在ViewPager中添加ImageView,则使用ImageView单击使其变得简单

答案 2 :(得分:0)

ViewPager中没有onClick侦听器,您可以使用Recyclerview而不是ViewPager使用相同的效果,如下所示

<android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view_scroll_page"
        android:layout_width="wrap_content"
        android:layout_height="250dp"
        android:orientation="horizontal"
        app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>

将Recyclerview用作水平,然后您可以滚动它并获取点击事件。请注意使用RecyclerView.Adapter