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

构建和显示弹出消息

您可以使用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值