2016-04-06 5 views
0

トラックが表示され、画面に表示されなくなった場合は表示できますか?ここのキーワードは "check"とは対照的にのトラックです。実際には、onShowingOnScreenonStopShowingOnScreenのような振る舞いを探しています。画面に表示されているかどうかをビュートラックで確認するには

背景については、私の見解はかなり入れ子になっています:Activity => ViewPager => Fragment => RecyclerView.Adapter => CatViewHolder => myView

気にする場合:この質問のために、この特定のCatViewHolderは他のDogViewHolderが複数回再利用される間に一度しか使用されないと仮定しましょう。

また、ビューでこれを行うことができない場合、ViewHolderはそれを実行できますか? (事実上同じ結果です)。

更新

完全を期すために、私はmyViewが表示されているときに、ウィンドウにスラブを添付し、窓から見えるものを停止しmyView瞬間をそのスラブを切り離しする必要が想像してください。 (私はスラブを使用して、再び「ビュー」という単語を使用しないようにします)。

+0

この方法をお試しください:http://stackoverflow.com/a/31684283/1478764 – chRyNaN

+0

リンクありがとうございます。アダプターのコンストラクターを変更できないと仮定します。どのようにしてRecyclerViewへのポインタをアダプタ内部かViewHolder内部から取得するのですか? –

答えて

1

まず、ビューは現在のビュー階層にアタッチされている必要があります。そのため、OnAttachStateChangeListenerthis methodに登録して、でもと表示されるかどうかを確認する必要があります。

次に、getWindowVisibleDisplayFrame()に電話して、Androidが表示スペースを割り当てていることを確認できます。

+0

この回答は非常に有望ですので、大変ありがとうございます(+1)。本当にありがとう。しかし、いくつかの問題が発生します。階層にはViewPagerがあります。したがって、アタッチメントは約3ページ離れて呼び出され、切り離されたページは約3ページ離れて呼び出されます。ユーザーは** myView **を表示しているページにいるか、ページから離れている正確なタイミングでアクションを実行する必要があります** myView **を表示します。デッドバンドは少し問題があります。 –

+0

私は完全性のために**更新** dの質問を持っています。 –

+0

getWindowVisibleDisplayFrameが呼び出された瞬間をメインスレッドから選択することができます。それは、ビューが添付されていないときに行う場合、あなたが望む値を与えないだけです。 –

関連する問題