複数のページを持つビューを設計しています。前のページと次のページの端を次のように表示し、2 本指のスワイプを実装してページを切り替えます。
ここでViewPager
提案されているように、負のページマージンを使用してみましたが、画面の端の 1 つだけが表示され、両方が同時に表示されることはありません。
または、ビューの一部を画面の外に配置し、アニメーション化してViewPager
タイプ効果を与える方法はありますか。
どうすればいいですか?ありがとう !
複数のページを持つビューを設計しています。前のページと次のページの端を次のように表示し、2 本指のスワイプを実装してページを切り替えます。
ここでViewPager
提案されているように、負のページマージンを使用してみましたが、画面の端の 1 つだけが表示され、両方が同時に表示されることはありません。
または、ビューの一部を画面の外に配置し、アニメーション化してViewPager
タイプ効果を与える方法はありますか。
どうすればいいですか?ありがとう !
この件に関するブログ投稿からの引用:
3 番目のアプローチは、評判の高い本 Android Recipes の共著者である Dave Smith によるものです。彼は非常に異なる方向に進み、子のクリッピングを無効にして一度に複数のページを表示するカスタム コンテナーを使用しました。
彼が公開したサンプル コードは、すべての動作を示しています。彼のコンテナ (
com.example.pagercontainer.PagerContainer
) は をラップし、それ自体ViewPager
を呼び出します。そのため、が選択された 1 つのページにフォーカスされていても、境界を超える座標を持つ他のページは、内に収まる限り表示されます。のサイズを よりも小さくすることで、 のページをそのサイズに合わせて、他のページが表示される余地を残すことができます。ただし、それ自体の可視境界でスワイプ イベントのみを処理し、側面に表示されるページを無視するため、タッチ イベントを少し支援する必要があります。setClipChildren(false);
ViewPager
ViewPager
PagerContainer
ViewPager
PagerContainer
ViewPager
PagerContainer
ViewPager
アイテム ビュー全体の左右のパディングを設定します。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>
次に、負のページ マージンPageView
を 2* (前のビューのパディング) に設定します。
int margin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20*2, getResources().getDisplayMetrics());
mViewPager.setPageMargin(-margin);
オプション。最初のアイテムにゼロの左パディングを設定し、最後のアイテムにゼロの右パディングを設定して、空のエッジを非表示にします。PageAdapter
またはPage
フラグメントクラスでこれを行うことができます。
左右のページのプレビューを表示するには、次の 2 つの値を設定します
viewpager.setClipToPadding(false)
viewpager.setPadding(left,0,right,0)
ビューページャーの 2 つのページ間にスペースが必要な場合は、viewpager.setPageMargin(int) を追加します。