developer tip

프로그래밍 방식으로 툴바에 대한 app : layout_scrollFlags를 설정하는 방법

copycodes 2020. 12. 29. 07:21
반응형

프로그래밍 방식으로 툴바에 대한 app : layout_scrollFlags를 설정하는 방법


내 앱에는 뷰 페이저와 4 개의 탭이 있으며 각 탭에는 많은 조각이 있습니다. 하지만 2 개의 특정 탭에서 recyclerview를 스크롤하면서 툴바를 위 / 아래로 스크롤하고 싶습니다. 하지만 다른 탭에서 툴바 스크롤을 차단하는 방법을 모르겠습니다. 각 조각에 대해 툴바를 가져 오려고했지만 할 수없는 것 같습니다. 누구든지이 문제를 해결할 아이디어가 있습니까?


선택한 탭에 따라 스크롤 플래그를 변경하지 않는 것이 좋습니다. 비 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)

// 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);
}

참조 URL : https://stackoverflow.com/questions/30771156/how-to-set-applayout-scrollflags-for-toolbar-programmatically

반응형