首先,在XML文件中定义一个可折叠的工具栏,如下所示:
设置app:layout_scrollFlags="scroll|exitUntilCollapsed"是为了在滚动时可以自动调整工具栏的位置,而app:layout_collapseMode="pin"是为了使工具栏在滚动时保持在折叠位置。
接下来,在Activity中,设置滚动监听器并根据滚动方向调整工具栏位置:
final CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appbar);
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { int scrollRange = -1;
@Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { if (scrollRange == -1) { scrollRange = appBarLayout.getTotalScrollRange(); } if (scrollRange + verticalOffset == 0) { //工具栏完全折叠 collapsingToolbar.setTitle("工具栏完全折叠"); } else if (verticalOffset == 0) { //工具栏完全展开 collapsingToolbar.setTitle("工具栏完全展开"); } else { //工具栏部分折叠 collapsingToolbar.setTitle("工具栏部分折叠"); } } });
上述代码中,addOnOffsetChangedListener()方法用于添加滚动监听器,初始时获取工具栏的总滚