0

FloatingActionButtonCoordinatorLayoutに実装しました。 FloatingActionButtonは、layout_behaviorがカスタムScrollAwareFABBehaviorに設定されています。ページャーをスワイプすると、fabはvisibillity(アニメーション)をうまく変更し、スクロールするネストされたビューも変更します。必要なサポートライブラリ(23.3.0)を実装しました。CoordinatorLayout、ViewPager、フラグメント内でFloatingActionButtonが表示されないようにしました

ページャが2 Fragmentsを示しています

ページの変更で
  1. RecyclerView(FAB示さなければならない)
  2. NestedScrollView(ファブを示してはならない)

、アクティビティは、子断片(インタフェースを要求します)ファブを表示するかどうかを指定します。それはうまくいくが、第2の断片のスクロールビューをスクロールすると、ファブが再び見える。

NestedScrollViewをスクロールして再びファブを表示しないようにするにはどうすればいいですか?

+0

FloatingActionButtonをアクティビティの代わりに1番目のフラグメントに追加することもできますし、2番目のフラグメントを手動で非表示にすることもできます。 – arjunkn

+0

最初のフラグメントに追加すると、ビューページスライドでスライドします。それはガイドラインが言っていることではない:ファブはスライドするビューページのビューで同じ位置にとどまらなければならない! – silversmurf

答えて

0

私はG +ユーザーからの回答を得ました(クレジットはChristophe Beylsです)!主な活動(またはメインの断片)上のCoordinatorLayout.Behaviorインスタンスを取得

:あなたはすべてのフラグメントのために設定することができますViewPager.OnPageChangeListener

public class ScrollAwareFABBehavior extends FloatingActionButton.Behavior { 
    private boolean mFabUserHidden = false; 

    // other stuff in here 

    /** 
    * Overrides the default FAB show/hide functionality 
    * 
    * @param hidden TRUE to stay hidden, false otherwise 
    */ 
    public void stayHidden(boolean hidden) { 
     mFabUserHidden = hidden; 
    } 

    @Override 
    public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { 
     super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); 

     if (dyConsumed > 0 && !this.mIsAnimatingOut && child.getVisibility() == View.VISIBLE) { 
      animateOut(child); 
     } else if (dyConsumed < 0 && !mFabUserHidden && child.getVisibility() != View.VISIBLE) { 
      animateIn(child); 
     } 
    } 

    // do other stuff 

} 

ScrollAwareFABBehavior.javaアドオンで

ファブが可視であるかどうかを判断する。

多分、同じ問題を抱える人を助けるでしょう!

関連する問題