Подтвердить что ты не робот

Как настроить приложение: layout_scrollFlags для панели инструментов программно

У моего приложения есть viewpager и 4 вкладки, каждая вкладка имеет много фрагментов. Но я просто хочу, чтобы моя панель инструментов прокручивалась вверх/вниз, прокручивая recyclerview в 2 конкретных вкладках. Но я не знаю, как заблокировать прокрутку панели инструментов для других вкладок. Я попытался импортировать панель инструментов для каждого фрагмента, но, похоже, я не могу этого сделать. У кого-нибудь есть идея решить эту проблему?

4b9b3361

Ответ 1

Я бы настоятельно рекомендовал не менять флажки прокрутки на основе выбранной вкладки, поскольку автоматическая возврат панели инструментов (и перемещение содержимого вниз) при прокрутке на вкладку не-recyclerview может быть очень резкой и, вероятно, не шаблоном взаимодействия вы хотите (раздражены, если ваши две вкладки RecyclerView находятся рядом друг с другом).

Однако, если вы хотите увидеть его лично, вы можете использовать setScrollFlags() для программного программирования флажков прокрутки:

Toolbar toolbar = ... // your toolbar within an AppBarLayout
AppBarLayout.LayoutParams params = 
    (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL
    | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);

Чтобы очистить флаги

params.setScrollFlags(0)

Ответ 2

// Show toolbar when we are in maps mode
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) mToolbar.getLayoutParams();
CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams();
if(isMapIndex) {
    params.setScrollFlags(0);
    appBarLayoutParams.setBehavior(null);
    mAppBarLayout.setLayoutParams(appBarLayoutParams);
} else {
    params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
    appBarLayoutParams.setBehavior(new AppBarLayout.Behavior());
    mAppBarLayout.setLayoutParams(appBarLayoutParams);
}