0

我有两个 ViewPager,中间有一个 PagerTitleStrip。我想要做的是滚动 ViewPager 之一,这将在完全相同的时间镜像到顶部。有人知道我会怎么做吗?

代码在这里:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<android.support.v4.view.ViewPager
    android:id="@+id/pager2"
    android:layout_width="fill_parent"
    android:layout_height="200dp"
    android:layout_marginBottom="-20dp" >

</android.support.v4.view.ViewPager>

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentBottom="true"
    android:layout_below="@+id/pager2" >

    <android.support.v4.view.PagerTitleStrip
        android:id="@+id/pager_title_strip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="@drawable/meatb"
        android:paddingBottom="2dp"
        android:paddingTop="9dp"
        android:textColor="#fff"/>

</android.support.v4.view.ViewPager>

4

2 回答 2

1

onDrag我没有找到为寻呼机设置“中间位置”的方法,因此在接收事件时似乎无法设置它。

但是,部分解决方案是向其中添加一个滚动侦听器mPager.setOnPageChangeListener(..)

并在发生这种情况时触发另一个页面转换:mPager2.setCurrentItem(mPage1.getCurrentItem()) .

这是部分解决方案,因为它不会同时发生,因为当页面已经滚动时(可能)会触发事件。

如果您必须同时发生这种情况,那么您将需要一个可以控制其绘图或视图定位到像素的视图。

于 2013-01-22T18:05:40.450 回答
1

才意识到这个问题仍然没有答案,但这是我如何让它工作的:

 mViewPager2.setOnPageChangeListener(new OnPageChangeListener() {

        public void onPageSelected(int arg0) {

        }

        public void onPageScrolled(int arg0, float arg1, int arg2) {
            mViewPager.scrollTo(arg0*width + arg2, 0);
            currentPos = arg0;
        }

        public void onPageScrollStateChanged(int arg0) {
            mViewPager.setCurrentItem(currentPos,false);
        }
    });

    mViewPager.setOnTouchListener(new OnTouchListener() {

        public boolean onTouch(View arg0, MotionEvent arg1) {
            return true;
        }
    }); 
于 2013-01-22T23:59:40.313 回答