7

Mam jedną aplikację Android Activity z dużą ilością fragmentów. Kiedy wyświetlam ekran listy, chcę użyć wartości Toolbar z właściwością, app:layout_scrollFlags="scroll|enterAlways". A w fragmentach szczegółów chcę użyć CollapsingToolbarLayout z obrazem w nim. Ponieważ jest to pojedyncza aplikacja Activity, mam tylko jedną Toolbar. Czy programowo można modyfikować mój układ, aby pasował do obu przypadków?Zmiana paska narzędzi i zwijanie paska narzędzi paska narzędzi Programowo przewijanie flag

Odpowiedz

9

Tak. Powiedzmy, że przechodzisz od fragmentu CollapsingToolbarLayout do paska Toolbar.

  1. zwinąć swój AppBarLayout użyciu AppBarLayout.setExpanded(false);

  2. Zmieniasz flagi przewijania zgodnie ze swoimi potrzebami.

    AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); 
    p.setScrollFlags(...); 
    toolbar.setLayoutParams(p); 
    

    To samo dotyczy opcji CollapsingToolbarLayout, jeśli jest to konieczne. Chyba powinno to być coś podobnego:

    collapsingToolbarParams.setScrollFlags(0); //no flags for ctl 
    toolbarParams.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS); //new flags for toolbar 
    
+0

miałem również ten problem. Wydaje się, że zapomniałem zadzwonić do metody 'setLayoutParams()'. Dziękuję za odpowiedź! – Mauker

+1

setScrollFlags (0) działa poprawnie, ale gdy próbuję ustawić to na: params.setScrollFlags (AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS | AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP); // wyczyść wszystkie flagi przewijania toolbar.setLayoutParams (params); nie działa. – iBobb