0

私はTabLayoutまたはTabHostというデザインを考えています。これがタブだとします -既存のフラグメントの上にフラグメントをオーバーレイする

タブ1 |タブ2 |タブ3 | Tab4 | Tab5

この次のアクションで

が開催されます -

  1. Tab1を - Fragment2
  2. TAB3を開く - - 半透明の黒のビューで既存のフラグメントオーバーオーバーレイを開き
  3. Fragment1
  4. TAB2を開きます
  5. Tab4 - フラグメント3を開く
  6. タブ5 - フラグメント4を開く

これを解決する方法はありますか? ありがとうございます!

UPDATE:ソリューション私はこれを試してみましたが、多くのカスタマイズをしなければならなかった

を使用しました。だから私は仕事が大変だったので途中で止まった。私が行った別の方法は、TabLayoutをTab3と同じ位置にもう一度表示し、それをクリックすることです。Viewオーバーレイビューを表示させました。

+0

あなたは 'ViewPager'を使用していますか? –

+0

現在、 'ViewPager'を使用しています –

+0

ユーザーがスワイプでページをスクロールすると、これはどのように動作するはずですか?オーバーレイを現在のページの上に横からスワイプする必要がありますか?またはスワイプ中にタブ3は無視されます –

答えて

0

ViewPagerは、この使用例のために設計されていません。タブは、ViewPagerの対応する要素に自動的にマッピングされます。しかし、ここで私はそれが働くのを見ることができました。

  1. はあなたの全体のViewPagerをオーバーレイVisibility.GONEを持ってTranslucentOverlayViewを持っています。
  2. tab3で複製クローンfragment2を開き、tab3を選択した場合はTranslucentOverlayViewを表示します。これは、fragment2の2つの別々のインスタンスを並べても意味します。
+0

良い提案がこれを試してみる... !!ありがとう:)私はそれを実装した後に投票します –

+0

質問を確認します。私は答えでそれを更新しました。提案ありがとう。私はそれを実装する時間があれば、それは確かに動作するだろう:) –

0

@ZakTaccardiが言ったように、ViewPagerはこのために設計されていません。

しかし、私はFragmentPagerAdapterを5ページで作成しようとします。つまり、getCount()は5を返すはずです。現在のインデックスが2の場合は、現在画面に表示されているインスタンスを返す必要があります。つまり、アダプタは現在のページを知る必要があります。 ViewPageronPageChangeListenerを使用して、アダプタに現在のページの内容を知らせることができます。インスタンスを取得するには、FragmentManagerを使用します。フラグメントへの参照をアダプタに格納しないでください。これによりメモリリークが発生します。これは、オーバーレイを表示し、あなたのViewPagerの上にViewを実装し、位置のときの位置は、それが2隠すときViewPageronPageSelected()コールバックにそれを表示するには、タブ3.

を選択すると、重複断片を防ぐためです2.

+0

質問を確認します。私は答えでそれを更新しました。提案ありがとう。それは私がそれを実装する時間があれば、確かに動作するだろう:) –

+0

あなたの質問への更新ではなく、答えとして投稿する必要があります。その後、あなたはそれを受け入れることができ、この質問は「答えられた」とみなされます。現時点ではまだ開いています。ありがとうございました。 –

関連する問題