[はじめに]
RecyclerViewであなた項目がViewPagerを使用している場合ViewPagerは、同じインターフェイス上で同じIDを2つ持つことはできませんので、ViewPager上のピット数回以前のプロジェクトを使用して、あなたはそれ以外の場合は、スリップをリードします、絶対に不可解な問題を持っていますそして、メモリの問題、使用ViewPagerネストされた内部項目リストビューは、動的が必要または動的にViewPager割当IDのインスタンスを生成します。
Googleはまた、最近(安定版は1.0.0です)ViewPager2の正式版をリリースし、あなたが今、安心することができViewPager2その本番環境用:
依存関係{ 実装 "androidx.viewpager2:viewpager2:1.0.0" }
もちろんViewPager2は、ライブラリandroidxパッケージですが、また次のアドレスを特に参照して、アセンブリJetpackのライブラリのメンバーです。
https://developer.android.google.cn/jetpack/androidx/releases/viewpager2
最も簡単な使用[]
ViewPager2内部使用RecyclerViewは、最も簡単な使い方はすぐにViewPager2のデフォルトの水平方向のスクロール以下のアダプタを使用することができます設定することです:
ViewPager2 uiVisitorPager2 = mRootView.findViewById(R.id.uiVisitorPager2)。
uiVisitorPager2.setAdapter(新しいRecyclerView.Adapter(){
@NonNull
@Override
公共RecyclerView.ViewHolder onCreateViewHolder(@NonNullのViewGroup親、int型ビュータイプ){
ビュー項目= View.inflate(parent.getContext()、R.layout.face_item_domicile、ヌル); ViewGroup.LayoutParams LP =新しいViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT、ViewGroup.LayoutParams.MATCH_PARENT); item.setLayoutParams(LP); RecyclerView.ViewHolder VH =新しいですRecyclerView.ViewHolder(アイテム){}。リターンVH; } @Override公共ボイドonBindViewHolder(@NonNull RecyclerView.ViewHolderホルダ、INT 位置){} @Override公共のint getItemCount(){リターン10 。}})。
上記手動で設定LayoutParamsを指摘し、そうでない場合は、スローされます。
java.lang.IllegalStateException:ページ全体ViewPager2(使用match_parent)を入力する必要があります
[垂直スクロール機能]
方位指定方向:ViewPager2横方向の支持と垂直スクロール、XMLだけでアンドロイドを介し:
<androidx.viewpager.widget.ViewPager アンドロイド:ID = "@ + ID / uiVisitorPager" アンドロイド:オリエンテーション= "垂直" アンドロイド:layout_width = "match_parent" アンドロイド:layout_height = "1DP" アプリ:layout_constraintLeft_toLeftOf = "親" アプリ:layout_constraintRight_toRightOf = "親" アプリ:layout_constraintTop_toBottomOf = "ID / uiTopTitle @">
【】ViewPager2.PageTransformer
ViewPager2もViewPager既存PageTransformerをサポートし、あなたが簡単に前のPageTransformerを再利用することができますので、全く同じ方法を使用します。
ViewPager2内で定義ViewPager2.PageTransformerはインターフェース、インターフェースメソッドとViewPager PageTransformer同一です。
公共の抽象無効transformPage(閲覧ページ、フロート位置)