问题
I have a single Activity android app with lots of fragments. When I'm showing a list screen I want to use the Toolbar
with the, app:layout_scrollFlags="scroll|enterAlways"
property. And in the detail fragments I want to use the CollapsingToolbarLayout
with an image in it. Since it's a single Activity app, I have only one Toolbar
. Is it possible to modify my layout programmatically to suit both cases?
回答1:
Yes. Let's say you are going from the CollapsingToolbarLayout fragment to the Toolbar one.
You collapse your
AppBarLayout
usingAppBarLayout.setExpanded(false)
;You change the scroll flags to fit your needs.
AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); p.setScrollFlags(...); toolbar.setLayoutParams(p);
Same goes for the CollapsingToolbarLayout if necessary. I guess it should be something like:
collapsingToolbarParams.setScrollFlags(0); //no flags for ctl toolbarParams.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS); //new flags for toolbar
回答2:
I found it working
public void disableToolBarScrolling() {
CollapsingToolbarLayout toolbar = findViewById(R.id.collap_toolbar);
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(0);
}
public void enableToolBarScrolling() {
CollapsingToolbarLayout toolbar = findViewById(R.id.collap_toolbar);
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS);
}
来源:https://stackoverflow.com/questions/32418625/changing-toolbar-and-collapsingtoolbarlayout-scroll-flags-programmatically