0

中央に PagerTitleStrip を持つ 2 つの ViewPager があります。私ができるようにしたいのは、ViewPagers の 1 つをスクロールすることです。これは、まったく同時に一番上のページにミラーリングされます。誰も私がこれについてどのように行くかについて何か考えを持っていますか?

コードは次のとおりです。

<?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イベントの受信中に設定することはできないようです。

ただし、部分的な解決策は、スクロール リスナーを 1 つに追加することです。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 に答える