Android 构建和显示弹出消息 CoordinatorLayout+Snackbar

来源:互联网 发布:什么软件可以看舰娘 编辑:程序博客网 时间:2024/06/05 00:36

构建和显示弹出消息

您可以使用Snackbar向用户显示简短的消息。 消息在短时间内自动消失。 Snackbar是用户不一定需要采取行动的简短信息的理想选择。 例如,电子邮件应用程序可以使用Snackbar来告诉用户应用程序已成功发送电子邮件

使用CoordinatorLayout

一个Snackbar附在一个视图上。 如果Snackbar附加到从View类派生的任何对象(例如任何常见的布局对象)中,Snackbar将提供基本功能。 但是,如果Snackbar连接到CoordinatorLayout,Snackbar将获得其他功能:
1.用户可以通过将Snackbar滑开来取消它。
2.当Snackbar出现时,布局会移动其他一些UI元素。 例如,如果布局具有FloatingActionButton,布局会在显示Snackbar时将按钮向上移动,而不是在按钮顶部绘制Snackbar。 你可以看到如图1所示。

图1

CoordinatorLayout类提供了FrameLayout功能的超集。 如果您的应用程序已经使用了FrameLayout,则可以使用CoordinatorLayout替换该布局,以启用完整的Snackbar功能。 如果您的应用程序使用其他布局对象,最简单的方法是将现有的布局元素包装在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>

确保为您的CoordinatorLayout设置一个android:id标签。 显示消息时,需要布局ID。

Display a Message


显示消息有两个步骤。 首先,您创建一个带有消息文本的Snackbar对象。 然后,您调用该对象的show()方法向用户显示消息


创建一个Snackbar对象

通过调用静态Snackbar.make()方法创建一个Snackbar对象。 创建Snackbar时,您同时指定显示的消息以及显示消息的时间长度:
Snackbar mySnackbar = Snackbar.make(view, stringId, duration);

参数:
view          将Snackbar附加到的视图。 该方法实际上从传递的视图中搜索视图层次结构,直到达到CoordinatorLayout或窗口装饰的内容视图。 通常,通过封闭内容的CoordinatorLayout是最简单的。
StringID 要显示的消息的资源ID。 这可以被格式化或未格式化的文本。
duration 显示消息的时间长短。 这可以是LENGTH_SHORT或LENGTH_LONG

向用户显示消息

创建Snackbar后,调用其show()方法向用户显示Snackbar:
mySnackbar.show();

系统不会同时显示多个Snackbar对象,因此如果该视图当前正在显示另一个Snackbar,则系统会将您的Snackbar排队,并在当前Snackbar过期或关闭之后显示该Snackbar对象。

如果您只想向用户显示消息,并且不需要调用任何Snackbar对象的实用程序方法,则在调用show()之后,不需要保留对Snackbar的引用。 因此,通常使用方法链在一个语句中创建和显示Snackbar:
Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_sent,                        Snackbar.LENGTH_SHORT)        .show();



















阅读全文
0 0
原创粉丝点击