2012-05-13 9 views
6

PageAdapter(互換性パックv4のもの)を使用してViewPagerを使用して、水平ボックスのリストをスワイプします。 問題は、最初のページの2番目のボックスが2番目のページの最初のボックス(視覚的および概念的に)であることです。ViewPagerのスワイプページ(互換性パックから)

enter image description here

私は今、それが動作やっている方法:このような何か。しかし、スワイプの途中で同じボックスが2回現れる状況があるため(画像に表示されているように)、これはちょっと変です。

"半分"のページのみをスワイプする方法はありますか?

EDIT:

ボックスが抽象化されています。実際には各ボックスはListViewであり、それぞれのアダプタを変更するだけで異なるページを作成します。ListView

答えて

26
  1. は1ページに1つのフラグメントを作成します(それがGalleryViewとして反応すると仮定しながら、私は解決策のほとんどを予測する)
  2. つ以上のページに表示する
  3. 上書きPageAdapterでgetPageWidth()

コード:

@Override 
public float getPageWidth(int position) { 
    float nbPages = 2; // You could display partial pages using a float value 
    return (1/nbPages); 
} 
+0

これは承認された回答である必要があります!どうもありがとう! –

+0

変更されました。「遅延」に申し訳ありません:) –

+0

完璧!私のためにうまく動作します。 getPageWidthの詳細なデフォルト値は1fです(つまり、画面領域の100%)。だから '1 /(no_of pages_per_screen_you_want)'を設定することができます –

2

はい、子の幅をページの半分として使用します。したがって、次の子を呼び出すスワイプはページの半分をスワイプします。がんばろう!

編集:スケッチをもう一度チェックし、1番目、2番目、3番目...を異なる子として実装してみてください。

+0

ボックスは単純化されています。実際には各ボックスは 'ListView'であり、各ボックスにはアダプタがあります。どちらにしても、どのようにして子の幅をページの半分にすることができますか? –

+0

@TiagoAlmeida。私にとって、ViewPagerの子供は常にViewPagerの内側の境界に満ちています。したがって、私はちょっとしたトリックで問題を解決しました。ここにソースコードがあります。https://github.com/MonkeyPerformingCodingAction/ViewPagerMultipleChildTrick –

+0

あなたのコードを見ました。ありがとう。しかし、ちょっとバギーです:p(ちょうど片側だけスワイプすることができます、ちょっとやっかい、おそらく私は自分の問題を説明しなかったでしょうか?)。私は今のようにswypeすることができるようにしたいですが、私はスワイプしているときに2ページのオーバーラップのようなものが欲しいです。あなたがそれをやったやり方には、あなたがスワイプできる2つのゾーンがあります。奇妙な気分。 –