0

私は難しい問題を抱えており、コミュニティがその実装についてコメントを持っているかどうかを知りたいと思っていました.

ViewPager があり、そこに 20 ページを追加しました。各ページには WebView があります。– これにより、複数の Web サイト間で垂直方向のページ フリッピングが提供されます。デフォルトでは ViewPager として機能するはずですが、ピンチしてズームすると、各ページが縮小し、ViewPager がリスト ビューのようにスクロールします。スムーズな移行が必要であり、2 つのモードが同じ Web コンテンツを使用するため、リスト ビューのような別のビューを使用したくありませんでした。そのため、スムーズな移行に影響を与える可能性のある構築/分解を避けたいと考えています。このスクロール ViewPager をVelocityViewPagerで実装できました。

私がやりたいことは、PC の動作と同じように、スクロールバーを表示して対話を許可しない ListView とは対照的に、スクロールバーを押したままドラッグしてページを下に移動するスクロールバーを追加することです。スクロールバーのように見え、スクロールバーが移動するとViewPagerの偽のドラッグを実行するカスタムビューを作成しました。問題は、ViewPager が保持しているページしかスクロールできないことです。そのため、ViewPager が 20 ページ全体を保持している場合はうまく機能しますが、ページのリサイクルを利用するためにデフォルトで 3 ページを保持すると、3 ページを超えてスクロールしません。指でスクロールするときに通常行う次のページを作成しないかのように。

ViewPager が疑似ドラッグ中に次のページを作成しない理由がわかりません。beginFakeDrag()、endFakeDrag()、fakeDragBy() 以外に何かしなければならないことはありますか? そして、20ページすべてをViewPagerに保持せずにこの動作を実装する方法はありますか?

4

1 に答える 1

0

このコードを調べてください。これは役に立つかもしれません:

 public class MainActivity extends Activity {

    @Override
     public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageArra);
      ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
      myPager.setAdapter(adapter);
      myPager.setCurrentItem(0);
     }

     private int imageArra[] = { R.drawable.gallery_photo_1, R.drawable.gallery_photo_2,
       R.drawable.gallery_photo_3, R.drawable.gallery_photo_5,
       R.drawable.gallery_photo_6, R.drawable.gallery_photo_7,
       R.drawable.gallery_photo_8, R.drawable.ic_launcher };

} 

ViewPager クラスは次のとおりです。

public class ViewPagerAdapter extends PagerAdapter {

Activity activity;
int imageArray[];

public ViewPagerAdapter(Activity act, int[] imgArra) {
    imageArray = imgArra;
    activity = act;
}

public int getCount() {
    return imageArray.length;
}

public Object instantiateItem(View collection, int position) {
    ImageView view = (ImageView) collection.findViewById(R.id.image);
    /*
     * view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
     * LayoutParams.FILL_PARENT)); view.setScaleType(ScaleType.FIT_XY);
     */
    view.setBackgroundResource(imageArray[position]);
    ((ViewPager) collection).addView(view, 0);
    return view;
}

@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
    ((ViewPager) arg0).removeView((View) arg2);
}

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
    return arg0 == ((View) arg1);
}

@Override
public Parcelable saveState() {
    return null;
}

}

于 2013-10-23T05:54:11.377 に答える