我想出了一個不同的方法設置嵌套滾動標誌僅拖動時工作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