Поделиться через


Элемент Snackbar

Важно!

В этой статье описаны функциональные возможности общедоступной ознакомительной версии, а также инструкции по ее использованию. Сведения могут быть существенно изменены, прежде чем версия станет общедоступной. Майкрософт не дает никаких гарантий, явных или подразумеваемых, в отношении предоставленной здесь информации.

Обзор

SnackbarContainer — это пользовательский FrameLayout с дочерним элементом CoordinatorLayout, который можно использовать в качестве контейнера для Snackbar. Этот контейнер поддерживает возможность складывания и может использоваться не только на складных, но и на обычных устройствах. Сообщение будет отображаться каждый раз в нижней части экрана на фиксированном расстоянии в 25 пикселей от краев экрана.

Используя информацию из WindowManager, этот контейнер перемещает дочерний элемент CoordinatorLayout туда, куда нужно разработчику: на первый экран, на второй экран или на весь экран. Для других сценариев можно использовать непосредственно Snackbar.

Импорт библиотеки в проект

  1. Убедитесь, что у вас есть репозиторий mavenCentral() в файле build.gradle верхнего уровня:

     allprojects {
         repositories {
             google()
             mavenCentral()
          }
     }
    
  2. Добавьте эту зависимость в файл build.gradle на уровне модуля:

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

  1. Если проект создан с помощью Java, необходимо добавить зависимость kotlin-stdlib в файл build.gradle на уровне модуля (это связано с тем, что библиотека Snackbar была создана с помощью Kotlin).

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

Отображение Snackbar в режиме двойного экрана

После добавления пакета выполните следующие действия, чтобы реализовать Snackbar в режиме двойного экрана:

  1. Добавьте SnackbarContainer в нижней части Activity или корневого представления 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. С помощью экземпляра SnackbarContainer можно отобразить Snackbar, используя этот фрагмент кода. Параметр snackbarContainer — это экземпляр SnackbarContainer, параметр message — отображаемый текст, а параметр LENGTH_LONG — длительность отображения. Функция show — это функция расширения, используемая для отображения Snackbar внутри SnackbarContainer в заданной позиции.

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

SnackbarPosition

Возможные значения для параметра position:

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

Подробности приведены ниже.

SnackbarPosition.START

Snackbar будет отображаться в нижней части первой области отображения:

START: snackbar on the first screen, portrait orientation

START: snackbar on the first screen, landscape orientation

SnackbarPosition.END

Snackbar будет отображаться во второй области отображения:

END: snackbar on the second screen, portrait orientation

END: snackbar on the second screen, landscape orientation

SnackbarPosition.BOTH

Snackbar будет отображаться в нижней части всей области отображения:

BOTH: snackbar on both screens, portrait orientation

BOTH: snackbar on both screens, landscape orientation

Образец

Чтобы увидеть все эти режимы, вы можете просмотреть код примера приложения с элементом Snackbar.