A biblioteca de suporte de design do Android agora inclui suporte para Snackbar.
Usei o seguinte código para criar um:
Snackbar.make(findViewById(R.id.root_layout), result, Snackbar.LENGTH_LONG)
.setAction("Dismiss", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}).show();
A lanchonete pode ser descartada com um toque. No entanto, também quero descartá-lo usando seu próprio botão de ação (criado com a função setAction).
No entanto, não parece haver nenhuma função disponível que faça isso.
android
android-snackbar
Asim
fonte
fonte
Snackbar
é contra as Diretrizes de design de materiais do Google .Respostas:
Para Java,
O
.make
método retorna umSnackbar
objeto. Salve uma instância desse objeto criando-ofinal
. Então, noonClick()
, ligue para.dismiss
:Para Kotlin,
fonte
OnClickListener
fornull
Implemente uma ação de clique e deixe-a em branco. Clicar na ação de clique vazia dispensará a barra de ferramentas.
fonte
null
por um ouvinte, sem necessidade de criar uma instância realQuando você usa
Snackbar.LENGTH_LONG
você não precisa de botão de ação para dispensar, após o segundo dispensar automaticamente. Você deve usar este código:Cuidado com esta linha :
fonte
Esta é uma pergunta antiga, mas eu só quero compartilhar minha própria experiência em torno de recursos semelhantes no Snackbar. Portanto, temos um design para nosso aplicativo, que a barra de ferramentas deve ser exibida indefinidamente e o usuário deve ser capaz de dispensá-la ... mas não deve haver o botão DISMISS dentro dela (o Google não recomenda as ações Dispensar ou Cancelar nas barras de qualquer maneira). Nossa lanchonete teve que ser descartada apenas tocando nela.
A única solução, funcionando para nós, foi no final (estou usando retrolambda aqui, mas o View.OnClickListener padrão também poderia ser usado):
Observe a chamada getView () no meio.
fonte
Snackbar (de 'com.android.support:design:23.2.1' ) suporta muitos tipos de ação de dispensar. Você pode criar um filtro simples usando evento , como neste exemplo:
Tipos de dispensa do Snackbar:
PS No código de amostra usado expressões lambda (por RetroLambda)
fonte
Eu tive o mesmo problema. Quando usei .dismiss (), as animações pareciam diferentes e havia dois problemas:
Olhando para o código-fonte do Android original para Snackbar, encontrei a seguinte solução:
Então, eu chamaria o .performClick no snackBarActionButton
Link para o código-fonte do Android para Snackbar: https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/design/src/android/support/design/widget/Snackbar.java
fonte