Skip to content

Instantly share code, notes, and snippets.

@carlosmuvi
Forked from ffgiraldez/ToolbarActivity.java
Created May 4, 2016 16:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save carlosmuvi/2eefc08d3ee25a1b699163e5018401d4 to your computer and use it in GitHub Desktop.
Save carlosmuvi/2eefc08d3ee25a1b699163e5018401d4 to your computer and use it in GitHub Desktop.
Disable toolbar scroll flag when content it's not enough to fill the screen
public class ToolbarActivity extends AppCompatActivity {
// Set the flags that fit your needs
private static final int ENABLED_SCROLL_BEHAVIOR = AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS | AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL;
private static final int DISABLED_SCROLL_BEHAVIOR = 0;
private static final int SCROLL_DOWN = 1;
//Injected via ButterKnife (http://jakewharton.github.io/butterknife)
@InjectView(R.id.toolbar)
Toolbar toolbar;
@InjectView(R.id.recyclerview)
RecyclerView recyclerView;
private final View.OnLayoutChangeListener recyclerViewChangeListener = new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
updateToolbarScrollBehavior();
}
};
@Override
public void onResume() {
super.onResume();
recyclerView.addOnLayoutChangeListener(recyclerViewChangeListener);
}
@Override
public void onPause() {
super.onPause();
recyclerView.removeOnLayoutChangeListener(recyclerViewChangeListener);
}
private void updateToolbarScrollBehavior() {
applyScrollBehavior(DISABLED_SCROLL_BEHAVIOR);
if (recyclerView.canScrollVertically(SCROLL_DOWN)) {
applyScrollBehavior(ENABLED_SCROLL_BEHAVIOR);
}
}
private void applyScrollBehavior(int scrollFlags) {
AppBarLayout.LayoutParams layoutParams = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
layoutParams.setScrollFlags(scrollFlags);
toolbar.setLayoutParams(layoutParams);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment