フラグメントビューがユーザーに表示されているかどうかをテストするには?
質問
ViewPagerがあり、各ページはFragmentビューです。あるフラグメントが可視領域にあるかどうかをテストしたいのですが、Fragment.isVisibleのテストのみです。
- フラグメントがアクティビティにアタッチされている
- フラグメントが可視に設定されている
- フラグメントはビューに追加されました。
ViewPagerは3つの(デフォルトで)フラグメントを作成し、それらの3つすべてが上記の条件を満たしますが、1つだけが実際にユーザーに見える状態です(人間の の目 )
どのように解決するのですか?
確かにもっといい方法がありますね!
を見てみましょう。 FragmentPagerAdapter を見てみましょう。 の javadoc を見てください。 setPrimaryItem(ViewGroup container, int position, Object object):void があり、まさにあなたが必要とすることを行っています。
javadocから
public void setPrimaryItem (ViewGroup container, int position, Object object)
現在、どの項目が主であるとみなされているかをアダプタに通知するために呼び出されます。 どの項目が現在quot;primary"であるとみなされるか、つまり、現在のページとしてユーザーに表示されるものを知らせるために呼び出されます。 ページとしてユーザーに表示されるものです。
パラメータ container ページが削除されるViewを含む。 position 現在プライマリであるページ位置。 object instantiateItem(View.View)によって返されたものと同じオブジェクト。 int)によって返されたものと同じオブジェクトです。
スクロール状態に関する注意
これを実装し、デバッグを開始して、正確にいつこれが呼び出されるかを感じ取ることができれば、フラグメントの準備中とユーザーがスワイプしている間に何度もこれが起動することにすぐに気がつくでしょう。
そのため、このメソッドに ViewPager.OnPageChangeListenerを追加するのがよいでしょう。 を追加し、ビューページャーのスクロール状態が scoll_state_idle になったときにのみ、必要なことを行います。
関連
-
[解決済み】フラグメントMyFragmentがアクティビティにアタッチされない。
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
-
[解決済み] ViewPagerでFragmentが表示されるタイミングを決定する方法
-
[解決済み] ViewPager PagerAdapter がビューを更新しない
-
[解決済み】FragmentPagerAdapterとFragmentStatePagerAdapterの違いは何ですか?
-
[解決済み】ViewPagerを動的に更新しますか?
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] HttpURLConnectionを使ったPOSTによるファイル送信
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ViewPagerでFragmentが表示されるタイミングを決定する方法
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] Android端末がHDPI画面かMDPI画面かを確認する方法は?
-
[解決済み] EditTextの右側のDrawableにonClickListenerを設定する [重複] [重複
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] Android Lintが翻訳されていない文字列を訴えないようにする。
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?