彈出消息的新方式——Snackbar

前言

安卓學習的第一課應該就講了安卓彈出消息Toast的使用,它能夠簡單快捷有效地以氣泡方式提醒用戶,但在MaterialDesign盛行的今天,Toast未免也太Low了,本文要講的即是Toast的取代者——Snackbar。

Snackbar介紹

Snackerbar簡單說就是用來取代Toast的,所以這裏就不多說,放兩張圖大家自行體會。

Toast:

Toast截圖

Snackbar:

Snackbar截圖

使用CoordinatorLayout佈局

首先Snackbar需要與View綁定在一起以便提供基本功能,至於View,首選CoordinatorLayout佈局,這樣能完全發揮Snacker的特性。
CoordinatorLayout佈局是FrameLayout的超類,所以可以將FrameLayout直接替換爲CoordinatorLayout,如果需要修改的佈局不是FrameLayout,那麼可以使用CoordinatorLayout來將其包裹住。

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/myCoordinatorLayout"
    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">

    <!-- Here are the existing layout elements, now wrapped in
         a CoordinatorLayout -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <!-- …Toolbar, other layouts, other elements… -->

    </LinearLayout>

</android.support.design.widget.CoordinatorLayout>

注意需要添加android:id屬性

操作Snackbar

1.創建Snackbar對象並顯示

Snackbar.make(viewId, stringId, duration).show;
  • viewId: Snackbar綁定的View資源ID
  • stringId: 需要顯示的文字信息資源ID
  • duration: 顯示時間長短

2.添加Action事件

Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),
                                R.string.email_archived, Snackbar.LENGTH_SHORT);
mySnackbar.setAction(R.string.undo_string, new MyUndoListener());
mySnackbar.show();

// 監聽 實現View.OnClickListener
public class MyUndoListener implements View.OnClickListener{

    &Override
    public void onClick(View v) {

        // Code to undo the user's last action
    }
}

由於Snackbar顯示的時間很短,所以不要設計讓用戶思考很久才能做決定的操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章