【问题标题】:Take the touch listener of an view and call an touch event on another view获取视图的触摸侦听器并在另一个视图上调用触摸事件
【发布时间】:2016-03-08 16:04:19
【问题描述】:

我有一个带有这个监听器的 viewpager。

pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            Float translation = position * viewpagerWidth *Constants.density;
            if(positionOffset != 0)
                image.setTranslationX(- translation -(positionOffsetPixels * Constants.density)/12);
        }

        @Override
        public void onPageSelected(int position) {
            page = position;
            mButtons.updateViewIntro(position + 1);
            switch (position){
                case 0:
                    title.setText(getString(R.string.passenger_name));
                    subtitle.setText(getString(R.string.intro_passenger_subtitle));
                    new FadeOutAnimation(arrowleft).animate();
                    break;
                case 1:
                    title.setText(getString(R.string.intro_mileage));
                    subtitle.setText(getString(R.string.intro_mileage_subtitle));
                    if(arrowleft.getVisibility() == View.GONE || arrowleft.getVisibility() == View.INVISIBLE)
                        new FadeInAnimation(arrowleft).animate();
                    if(arrowright.getVisibility() == View.GONE || arrowright.getVisibility() == View.INVISIBLE)
                        new FadeInAnimation(arrowright).animate();
                    break;
                case 2:
                    title.setText(getString(R.string.intro_analytics));
                    subtitle.setText(getString(R.string.intro_analytics_subtitle));
                    new FadeOutAnimation(arrowright).animate();
                    break;
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

我的问题是:如果我在底部有另一个视图,那绝不会连接到这个 viewpager。是否可以在其上设置一个触摸侦听器,并使其也将调用 viewpager 的 onPageChangeListener? 如,我希望能够通过按下另一个对象来滚动查看器。 (我也需要在图片上添加)

【问题讨论】:

    标签: android view android-viewpager ontouchlistener translate


    【解决方案1】:

    是的,只需为您的视图设置一个触摸侦听器,然后在寻呼机上调用 setCurrentItem。

    private final View.OnClickListener mListener = new View.OnClickListener() {
        public void onClick(View view) {
            mPager.setCurrentItem(<page number here>);
        }
    }
    

    编辑:根据您的评论,试试这个:

    yourView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return mPager.onTouchEvent(event);
        }
    });
    

    【讨论】:

    • 不是我需要的。一个例子:你知道什么时候你不改变 viewpager 页面,但你只是将 viewpager 滚动到一半。然后你在监听器中获得 ScrollOffset 像素等...我想触摸另一个视图,它在下面,并且在该视图的触摸事件中,它将它传递给 viewpager,以便调用 onPageChanged 监听器,我从中得到 ScrollOffset 像素。基本上,如果我从底部滑动视图,我会看到 viewpager 是如何移动的......
    • 我不明白您为什么要这样做,通过在单独的视图上拖动手指来滚动视图似乎不直观(用户应该如何学习?)。但是,您可以通过为您的视图定义一个触摸侦听器来实现它,然后使用视图中的事件调用 mPager.onTouch(event)。
    • 谢谢。现在将尝试。好。我在页面中间有一个viewpager。我有一个比屏幕大的背景,它是我翻译的图像视图,产生视差效果。这在我滚动查看器时有效。但是,当我按下背景视差图像时,我的老板也希望它能够工作......所以是的。
    猜你喜欢
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2011-01-31
    • 2020-12-09
    相关资源
    最近更新 更多