来自一个PagerTitleStrip的两个ViewPagers。

时间:2012-11-23 00:04:11

标签: android android-viewpager

我有两个ViewPagers,其中一个是PagerTitleStrip。我想要做的是滚动一个ViewPagers,这将在同一时间镜像在顶部。任何人都有任何想法我会怎么做?

代码在这里:

<?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>

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

答案 1 :(得分: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;
        }
    });