Snackbar是design support library中另一个组件,使用Snackbar我们可以在屏幕底部(大多时候)快速弹出消息,它和Toast非常相似,但是它更灵活一些。
- 当它显示一段时间后或用户与屏幕交互时它会自动消失。
- 可以自定义action-可选操作。
- swiping it off the screen可以让FAB消失
- 它是context sensitive message(自己理解吧),所以这些消息是UI screen的一部分并且它是显示在所有屏幕其它元素之上(屏幕最顶层),并不是像Toast一样覆盖在屏幕上。
- 同一时间只能显示一个snackbar。
布局文件:
<android.support.design.widget.CoordinatorLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="200dp" android:layout_alignParentBottom="true"> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end|bottom" android:layout_marginRight="16dp" /> </android.support.design.widget.CoordinatorLayout>
代码:
container = (CoordinatorLayout) findViewById(R.id.container); Button btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Snackbar.make(container, "Hello Snackbar!", Snackbar.LENGTH_SHORT).setDuration(5000).setAction("Undo", new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }).setActionTextColor(Color.GREEN).show(); } });
说明:把snackbar放到coordinatorLayout里,才可以右滑退出。 把floatingActionBar放到coordinatorLayout,当弹出snackbar时,才不会遮挡floatingActionBar,而是floatingAction向上移动。