コーディネーターレイアウトのアクティビティがあります。アクティビティ内にリサイクラービューとフロートボタンのフラグメントがあります。スクロールリサイクラービューのときにフロートボタンを表示/非表示にして、ファブ動作の使用を回避するにはどうすればよいですか?!
アクティビティレイアウトの場合:CoordinatorLayout -----> AppBarLayout ---->ツールバーとFrameLayout、および下部バービュー
フラグメントレイアウトの場合:RelativeLayout ---->リサイクラービューとフロートボタン
Google+ホームページのようなものを実装したいです。このシナリオをどのように実装できますか?
フラグメント内のインターフェイスごとにアクティビティのコーディネーターレイアウトを使用し、ファブの動作でファブを表示/非表示にします...より良い解決策が見つかるまで!!!
このコードは問題なく機能します。
mRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if(dy > 0){
mFab.hide();
} else{
mFab.show();
}
super.onScrolled(recyclerView, dx, dy);
}
});
できません:
app:layout_anchor="@id/listView"
app:layout_anchorGravity="bottom|end"
見てください ここ :
このGoogleの投稿 に従って、CoordinatorLayoutがListViewと連携するための組み込みのサポートはありません。
Leondroのメソッドを変更して、スクロールがあるとFABが非表示になり、スクロールが停止すると表示されるようにしました。
scrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
switch (newState) {
case RecyclerView.SCROLL_STATE_IDLE:
fab.show();
break;
default:
fab.hide();
break;
}
super.onScrollStateChanged(recyclerView, newState);
}
};
rv.clearOnScrollListeners();
rv.addOnScrollListener(scrollListener);