Proste pytanie, ale nie mogę znaleźć odpowiedzi. Jak mogę zwinąć lub rozwinąć CollapsingToolbarLayout
programowo?
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Proste pytanie, ale nie mogę znaleźć odpowiedzi. Jak mogę zwinąć lub rozwinąć CollapsingToolbarLayout
programowo?
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Odpowiedzi:
Korzystając z Support Library v23, możesz zadzwonić
appBarLayout.setExpanded(true/false)
.Dalsze czytanie: AppBarLayout.setExpanded (boolean)
źródło
Używam tego kodu do zwijania paska narzędzi. Nadal nie mogę znaleźć sposobu, aby go rozwinąć.
Edycja 1: Ta sama funkcja z ujemną prędkością Y,
ale pasek narzędzi nie jest rozszerzony w 100%,a fałsz dla ostatniego parametru powinien działaćEdycja 2: ten kod załatwia sprawę za mnie
Spróbuję samodzielnie wdrożyć Behavior.
źródło
onNestedFling
nafalse
.onNestedFling
przed ustawieniem fragmentu. Po ustawieniu fragmentu mogłem pomyślnie wywołać metodę.Możesz określić, jak bardzo się rozwija lub zwija za pomocą niestandardowego animatora. Po prostu użyj
setTopAndBottomOffset(int)
.Oto przykład:
źródło
( -900 )
do ustawieniavalueAnimator.setIntValues
Lepszym rozwiązaniem jest użycie- ( appBar.getTotalScrollRange() )
Napisałem małe rozszerzenie do
AppBarLayout
. Pozwala na rozwijanie i zwijanieCollapsibleToolbarLayout
zarówno z animacją, jak i bez niej. Wydaje się, że robi to całkiem dobrze.Śmiało wypróbuj.
Po prostu użyj go zamiast swojego
AppBarLayout
i możesz wywołać metody odpowiedzialne za rozwijanie lub zwijanieCollapsingToolbarLayout
.Działa dokładnie tak, jak oczekiwano w moim projekcie, ale może być konieczne dostosowanie wartości fling / scroll w
perform...
metodach (szczególnie wperformExpandingWithAnimation()
), aby idealnie pasowały do twojegoCollapsibleToolbarLayout
.źródło
setExpanded
metoda wAppBarLayout
.Służy
mAppBarLayout.setExpanded(true)
do rozwijania paska narzędzi imAppBarLayout.setExpanded(false)
zwijania paska narzędzi.Jeśli chcesz programowo zmienić wysokość CollapsingToolbarLayout, po prostu użyj
mAppBarLayout.setLayoutParams(params)
;Rozszerzać:
Zawalić się:
źródło
dla tych, którzy chcą pracować z onNestedPreScroll i otrzymywać błędy jak ja. dostaję NullPointerException w onCreate bez tej linii
i nie działa poprawnie z tym. ale obejdę ten problem z
w onCreate:
i...
źródło
Spróbuj tego...
Rozszerzać
Przypomnieć sobie
źródło
Może to pomóc w rozwinięciu lub zwinięciu:
źródło
używam tego
źródło
Aby programowo rozwinąć / zwinąć AppBarLayout:
źródło