Snackbar

Importante

Este artigo descreve funcionalidades e diretrizes que estão em versão prévia pública e podem ser modificadas substancialmente antes de passarem para a disponibilidade geral. A Microsoft não faz nenhuma garantia, expressa ou implícita, com relação às informações fornecidas aqui.

Visão geral

O SnackbarContainer é um FrameLayout personalizado com um CoordinatorLayout como um filho que pode ser usado como um suporte para o Snackbar. Esse contêiner tem reconhecimento de dobra e pode ser usado em dispositivos dobráveis e também em dispositivos regulares. A mensagem será exibida sempre na parte inferior da tela com 25 pixels fixos nas bordas da tela.

Usando as informações do WindowManager, esse contêiner move o filho CoordinatorLayout para onde o desenvolvedor precisa, seja na primeira tela, na segunda tela ou na tela inteira. Para outros cenários, você pode usar o Snackbar diretamente.

Como importar a biblioteca para seu projeto

  1. Verifique se o repositório mavenCentral() está no arquivo build.gradle de nível superior:

     allprojects {
         repositories {
             google()
             mavenCentral()
          }
     }
    
  2. Adicione esta dependência ao arquivo de nível de módulo build.gradle:

    dependencies {
         implementation "com.microsoft.device.dualscreen:snackbar:1.0.0-alpha2"
    }
    

  1. Se o projeto for criado usando Java, você precisará adicionar uma dependência kotlin-stdlib ao arquivo build.gradle no nível do módulo (isso ocorre porque a biblioteca Snackbar foi criada usando o Kotlin).

    dependencies {
       implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    }
    

Como mostrar um Snackbar de tela dupla

Depois que o pacote for adicionado, siga estas etapas para implementar o Snackbar de tela dupla:

  1. Adicione o SnackbarContainer na parte inferior do modo de exibição raiz Activity ou Fragment:

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:app="http://schemas.android.com/apk/res-auto" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
    
        <com.microsoft.device.dualscreen.snackbar.SnackbarContainer 
            android:id="@+id/snackbar_container" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" 
            app:layout_constraintBottom_toBottomOf="parent" 
            app:layout_constraintEnd_toEndOf="parent" 
            app:layout_constraintStart_toStartOf="parent" /> 
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    
  2. Usando uma instância do SnackbarContainer, você pode exibir o Snackbar usando este snippet de código. O parâmetro snackbarContainer é uma instância de SnackbarContainer, o parâmetro message é o texto a ser exibido e LENGTH_LONG é a duração de exibição. A função show é uma função de extensão usada para exibir o Snackbar dentro do SnackbarContainer determinado na posição especificada.

    Snackbar
        .make(snackbarContainer.coordinatorLayout, message, LENGTH_LONG)
        .show(snackbarContainer, position) 
    

SnackbarPosition

Os valores possíveis para o parâmetro position são:

  • SnackbarPosition.START
  • SnackbarPosition.END
  • SnackbarPosition.BOTH

Eles são explicados em mais detalhes a seguir.

SnackbarPosition.START

O Snackbar será exibido na parte inferior da primeira área de exibição:

START: snackbar on the first screen, portrait orientation

START: snackbar on the first screen, landscape orientation

SnackbarPosition.END

O Snackbar será exibido na segunda área de exibição:

END: snackbar on the second screen, portrait orientation

END: snackbar on the second screen, landscape orientation

SnackbarPosition.BOTH

O Snackbar será exibido na parte inferior de toda a área de exibição:

BOTH: snackbar on both screens, portrait orientation

BOTH: snackbar on both screens, landscape orientation

Amostra

Você pode dar uma olhada no código do aplicativo de exemplo do snackbar para ver todos esses comportamentos.