Pergunta simples, mas não consigo encontrar uma resposta. Como posso recolher ou expandir CollapsingToolbarLayout
programaticamente?
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Pergunta simples, mas não consigo encontrar uma resposta. Como posso recolher ou expandir CollapsingToolbarLayout
programaticamente?
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Respostas:
Usando a Biblioteca de suporte v23, você pode ligar
appBarLayout.setExpanded(true/false)
.Leitura adicional: AppBarLayout.setExpanded (boolean)
fonte
Eu uso esse código para recolher a barra de ferramentas. Ainda não conseguiu encontrar uma maneira de expandi-lo.
Edit 1: A mesma função com velocidade negativaY,
mas a barra de ferramentas não é expandida 100%e false para o último parâmetro deve funcionarEdit 2: Este código faz o truque para mim
Tentarei implementar o comportamento sozinho.
fonte
onNestedFling
comofalse
.onNestedFling
antes de definir o fragmento. Depois de definir o fragmento, eu poderia chamar o método com sucesso.Você pode definir o quanto ele se expande ou entra em colapso com seu animador personalizado. Basta usar o
setTopAndBottomOffset(int)
.Aqui está um exemplo:
fonte
( -900 )
para definirvalueAnimator.setIntValues
A solução do- ( appBar.getTotalScrollRange() )
Eu escrevi uma pequena extensão para
AppBarLayout
. Permite a expansão e o colapso deCollapsibleToolbarLayout
ambos com e sem animação. Parece estar fazendo tudo certo.Sinta-se livre para experimentar.
Basta usá-lo em vez do seu
AppBarLayout
e poderá chamar métodos responsáveis pela expansão ou recolhimento doCollapsingToolbarLayout
.Está funcionando exatamente como o esperado no meu projeto, mas você pode precisar ajustar os valores de arremesso / rolagem nos
perform...
métodos (especialmente emperformExpandingWithAnimation()
) para se ajustar perfeitamente ao seuCollapsibleToolbarLayout
.fonte
setExpanded
método noAppBarLayout
.Use
mAppBarLayout.setExpanded(true)
para expandir a Barra de Ferramentas e usemAppBarLayout.setExpanded(false)
para recolher a Barra de Ferramentas.Se você deseja alterar a altura de CollapsingToolbarLayout programaticamente, basta usar
mAppBarLayout.setLayoutParams(params)
;Expandir:
Colapso:
fonte
para aqueles que querem trabalhar com onNestedPreScroll e obter erros como eu. eu recebo NullPointerException no onCreate com esta linha
e não funciona corretamente com isso. mas eu trabalho em torno deste problema com
em onCreate:
e...
fonte
Tente isso ...
Expandir
Recolher
fonte
Isso pode ajudar a expandir ou contrair:
fonte
eu tenho usando isso
fonte
Para expandir / recolher AppBarLayout programaticamente:
fonte