150

複数のページを持つビューを設計しています。前のページと次のページの端を次のように表示し、2 本指のスワイプを実装してページを切り替えます。

ここに画像の説明を入力

ここでViewPager提案されているように、負のページマージンを使用してみましたが、画面の端の 1 つだけが表示され、両方が同時に表示されることはありません。

または、ビューの一部を画面の外に配置し、アニメーション化してViewPagerタイプ効果を与える方法はありますか。

どうすればいいですか?ありがとう !

4

8 に答える 8

102

この件に関するブログ投稿からの引用:

3 番目のアプローチは、評判の高い本 Android Recipes の共著者である Dave Smith によるものです。彼は非常に異なる方向に進み、子のクリッピングを無効にして一度に複数のページを表示するカスタム コンテナーを使用しました。

が公開したサンプル コードは、すべての動作を示しています。彼のコンテナ ( com.example.pagercontainer.PagerContainer) は をラップし、それ自体ViewPagerを呼び出します。そのため、が選択された 1 つのページにフォーカスされていても、境界を超える座標を持つ他のページは、内に収まる限り表示されます。のサイズを よりも小さくすることで、 のページをそのサイズに合わせて、他のページが表示される余地を残すことができます。ただし、それ自体の可視境界でスワイプ イベントのみを処理し、側面に表示されるページを無視するため、タッチ イベントを少し支援する必要があります。setClipChildren(false);ViewPagerViewPagerPagerContainerViewPagerPagerContainerViewPagerPagerContainerViewPager

ここに画像の説明を入力

于 2012-12-21T20:29:31.253 に答える
76
  1. アイテム ビュー全体の左右のパディングを設定します。XML の例 (page_item.xml):

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"/>
    
    <TextView
        android:id="@+id/text1"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />
    
    </LinearLayout>
    
  2. 次に、負のページ マージンPageViewを 2* (前のビューのパディング) に設定します。

    int margin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20*2,     getResources().getDisplayMetrics());
    mViewPager.setPageMargin(-margin);
    
  3. オプション。最初のアイテムにゼロの左パディングを設定し、最後のアイテムにゼロの右パディングを設定して、空のエッジを非表示にします。PageAdapterまたはPageフラグメントクラスでこれを行うことができます。

于 2013-04-02T19:47:27.340 に答える
49

左右のページのプレビューを表示するには、次の 2 つの値を設定します

viewpager.setClipToPadding(false)
viewpager.setPadding(left,0,right,0)

ビューページャーの 2 つのページ間にスペースが必要な場合は、viewpager.setPageMargin(int) を追加します。

Android ViewPager - 左右にページのプレビューを表示

于 2014-06-23T15:01:41.463 に答える