我想出了一个不同的方法设置嵌套滚动标志仅拖动时工作NestedScrollView。应用栏仍然可以通过在栏上自行刷新来扩展。
我把它设置为“Utils”类中的一个静态函数。显然,解锁时设置的标志取决于哪些标志与您的用例相关。
此功能假定您开始用展开的工具栏
public static void LockToolbar(boolean locked, final AppBarLayout appbar, final CollapsingToolbarLayout toolbar) {
if (locked) {
// We want to lock so add the listener and collapse the toolbar
appbar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
if (toolbar.getHeight() + verticalOffset < 2 * ViewCompat.getMinimumHeight(toolbar)) {
// Now fully expanded again so remove the listener
appbar.removeOnOffsetChangedListener(this);
} else {
// Fully collapsed so set the flags to lock the toolbar
AppBarLayout.LayoutParams lp = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
lp.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS_COLLAPSED);
}
}
});
appbar.setExpanded(false, true);
} else {
// Unlock by restoring the flags and then expand
AppBarLayout.LayoutParams lp = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
lp.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
appbar.setExpanded(true, true);
}
}
你为什么在回答我的答案张贴随机码?由于我的答案没有使用任何数组,并且您的代码是由数组生成的异常,所以它们没有任何相关性。 – Kuffs
注意!不要忘记打电话给这条线: toolbar.setLayoutParams(lp); 否则解决方法不起作用。 – maXp