前言
安卓學習的第一課應該就講了安卓彈出消息Toast的使用,它能夠簡單快捷有效地以氣泡方式提醒用戶,但在MaterialDesign盛行的今天,Toast未免也太Low了,本文要講的即是Toast的取代者——Snackbar。
Snackbar介紹
Snackerbar簡單說就是用來取代Toast的,所以這裏就不多說,放兩張圖大家自行體會。
Toast:
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顯示的時間很短,所以不要設計讓用戶思考很久才能做決定的操作。