- 浏览: 223313 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
啊嘞嘞勒:
游戏结束无法显示
自己制作的 java 版 2048游戏 -
VIP庚:
dufangyu1990 写道VIP庚 写 ...
Android 视频通话(一) -
dufangyu1990:
VIP庚 写道dufangyu1990 写 ...
Android 视频通话(一) -
VIP庚:
dufangyu1990 写道VIP庚 写道dufangyu1 ...
Android 视频通话(一) -
dufangyu1990:
VIP庚 写道dufangyu1990 写道VIP庚 写道du ...
Android 视频通话(一)
最近无意间看到一篇文章,解决了我很久以前的困扰
简单介绍一下SnackBar:
SnackBar是 Android Support Library 22.2.0 里面新增提供的一个控件,是Toast的威力加强版.
优点:
1. 配合CoordinatorLayout使用,SnackBar可以被Swipe手势划走;
2. setAction功能.在SnackBar上可以设定一个按钮.Inbox里面UNDO就是通过SnackBar的setAction来实现的;
具体使用方法很简单,网上有很多例子,这儿就不介绍了
在谷歌 Material Design设计规范中这样写道:
短文本
通常 Snackbar 的高度应该仅仅用于容纳所有的文本,而文本应该与执行的操作相关。Snackbar 中不能包含图标,操作只能以文本的形式存在。
最多0-1个操作,不包含取消按钮
当一个动作发生的时候,应当符合提示框和可用性规则。当有2个或者2个以上的操作出现时,应该使用提示框而不是 Snackbar,即使其中的一个是取消操作。如果 Snackbar 中提示的操作重要到需要打断屏幕上正在进行的操作,那么理当使用提示框而非 Snackbar。
这个是系统SnackBar的布局:
也就是说我们只能为snackbar设置一个按钮,且这个按钮不是取消按钮。但有时候我们需要两个按钮,这时候我们可能会想到重新自己写个SnackBar了,这儿有一个更简单的办法
1、 写个布局来存放要添加的按钮
按钮样式是参照SnackBar布局中按钮的样式
2、SnackBar工具类 用来将布局添加进SnackBar
index为添加的位置,当index为1,就会放在SnackBar中TextView的后面,自带button的前面
3 SnackBar工具类 为添加进来的按钮设置监听器,和显示文字
4、使用
同样的我们也可以将图片等东西添加进去...
我不建议为snackBar添加多个按钮,因为谷歌 Material Design设计规范已经说了,SnackBar是轻量级的,但有时候需求就是这样。就像以前Material Design规定不建议使用和iphone一样的底部导航栏,而现在的现在Material Design设计规范中加入底部导航栏,当用的人多了,自然就成了规范
简单介绍一下SnackBar:
SnackBar是 Android Support Library 22.2.0 里面新增提供的一个控件,是Toast的威力加强版.
优点:
1. 配合CoordinatorLayout使用,SnackBar可以被Swipe手势划走;
2. setAction功能.在SnackBar上可以设定一个按钮.Inbox里面UNDO就是通过SnackBar的setAction来实现的;
具体使用方法很简单,网上有很多例子,这儿就不介绍了
在谷歌 Material Design设计规范中这样写道:
短文本
通常 Snackbar 的高度应该仅仅用于容纳所有的文本,而文本应该与执行的操作相关。Snackbar 中不能包含图标,操作只能以文本的形式存在。
最多0-1个操作,不包含取消按钮
当一个动作发生的时候,应当符合提示框和可用性规则。当有2个或者2个以上的操作出现时,应该使用提示框而不是 Snackbar,即使其中的一个是取消操作。如果 Snackbar 中提示的操作重要到需要打断屏幕上正在进行的操作,那么理当使用提示框而非 Snackbar。
这个是系统SnackBar的布局:
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/snackbar_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:paddingTop="14dp" android:paddingBottom="14dp" android:paddingLeft="12dp" android:paddingRight="12dp" android:textAppearance="@style/TextAppearance.Design.Snackbar.Message" android:maxLines="2" android:layout_gravity="center_vertical|left|start" android:ellipsize="end" android:textAlignment="viewStart"/> <Button android:id="@+id/snackbar_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="0dp" android:layout_marginStart="0dp" android:layout_gravity="center_vertical|right|end" android:paddingTop="14dp" android:paddingBottom="14dp" android:paddingLeft="12dp" android:paddingRight="12dp" android:visibility="gone" android:textColor="?attr/colorAccent" style="?attr/borderlessButtonStyle"/> </merge>
也就是说我们只能为snackbar设置一个按钮,且这个按钮不是取消按钮。但有时候我们需要两个按钮,这时候我们可能会想到重新自己写个SnackBar了,这儿有一个更简单的办法
1、 写个布局来存放要添加的按钮
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" > <Button android:id="@+id/cancel_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="14dp" android:paddingBottom="14dp" android:textColor="?attr/colorAccent" style="?attr/borderlessButtonStyle"/> </LinearLayout>
按钮样式是参照SnackBar布局中按钮的样式
2、SnackBar工具类 用来将布局添加进SnackBar
/** * 向snackbar布局中添加view * * @param snackbar * @param layoutId 新添加布局 id * @param index 添加的位置 */ public static void SnackbarAddView(Snackbar snackbar, int layoutId, int index) { View snackbarview = snackbar.getView();//获取snackbar的View(其实就是SnackbarLayout) Snackbar.SnackbarLayout snackbarLayout = (Snackbar.SnackbarLayout) snackbarview;//将获取的View转换成SnackbarLayout View add_view = LayoutInflater.from(snackbarview.getContext()).inflate(layoutId, null);//加载布局文件新建View LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);//设置新建布局参数 p.gravity = Gravity.CENTER_VERTICAL;//设置新建布局在Snackbar内垂直居中显示 snackbarLayout.addView(add_view, index, p);//将新建布局添加进snackbarLayout相应位置 }
index为添加的位置,当index为1,就会放在SnackBar中TextView的后面,自带button的前面
3 SnackBar工具类 为添加进来的按钮设置监听器,和显示文字
/** * 为snackbar中指定按钮控件添加点击监听器 * @param snackbar * @param btn_id * @param onClickListener */ public static void SetAction(Snackbar snackbar, int btn_id, String action_string, View.OnClickListener onClickListener) { View view = snackbar.getView();//获取Snackbar的view if (view != null) { //为添加的按钮设置监听器 ((Button)view.findViewById(btn_id)).setText(action_string); (view.findViewById(btn_id)).setOnClickListener(onClickListener); } }
4、使用
final Snackbar snackbar = Snackbar.make(coordinatorLayout, "删除该联系人?", Snackbar.LENGTH_LONG); //添加新按钮 SnackbarUtil.SnackbarAddView(snackbar,R.layout.snakerbar_add_layout,1); //设置新添加的按钮监听器 SnackbarUtil.SetAction(snackbar,R.id.cancel_btn,"取消",new View.OnClickListener() { @Override public void onClick(View v) { snackbar.dismiss(); } }); //设置snackbar自带的按钮监听器 snackbar.setAction("确定", new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "删除联系人成功", Toast.LENGTH_SHORT).show(); initData(); } }); snackbar.show();
同样的我们也可以将图片等东西添加进去...
我不建议为snackBar添加多个按钮,因为谷歌 Material Design设计规范已经说了,SnackBar是轻量级的,但有时候需求就是这样。就像以前Material Design规定不建议使用和iphone一样的底部导航栏,而现在的现在Material Design设计规范中加入底部导航栏,当用的人多了,自然就成了规范
发表评论
-
2018 Flag
2019-02-23 16:24 450一年多没写博客了,2018年工作太忙了,但是也收获到 ... -
PopupWindow 模拟通知弹出
2017-10-09 10:11 1246最近遇到一个需求,下面记录下实现方法 以及遇到的一些坑 需求 ... -
在Android源码下编译jni所需要知道的事~
2017-03-21 16:40 2964以下只是自己的一些总结,欢迎讨论 通过NDK编译jni网上有 ... -
Android 通过PathMeasure和Path实现动画
2016-12-24 17:07 5891最近一直在学习android框架,也就没怎么写博客了。前几 ... -
解决 Android 写入图片后 系统图库中看不到
2016-10-30 17:47 3226将一个图片通过写入外部存储后,打开系统图库找不到该图片 ... -
Android 6.0 对权限的处理
2016-09-01 14:15 3057最近要将拍的照片写入到手机外部存储中,开始测试时一点问题都 ... -
Android Dialog设置TYPE_SYSTEM_ALERT 有些手机不能显示问题
2016-08-08 11:46 11678在对话框初始的时候,设置 mProgressDialo ... -
Java 关于在公网上无法发送UDP数据给客户端问题
2016-05-19 00:22 5675最近在弄语音通话,当在局域网测试程序的时候,tcp和udp ... -
根据汉字拼音排序
2016-05-05 19:38 2353最近在做操作联系人数据这一块,当读取系统表中的联系人的数据 ... -
Android 开源图表库 ------ MPAndroidChart
2016-04-16 18:27 0最近在开发心率方面,要绘制心率图,准备自己写自定义view ... -
Android 命名空间和自定义属性
2016-03-18 13:06 4283在布局文件中经常看到 xmlns:android=&q ... -
Android 自定义属性和命名空间
2016-03-18 13:03 0在布局文件中经常看到 xmlns:android=&q ... -
组件之间通信------ EventBus 学习心得
2016-03-07 22:12 4711Android 线程、组件之间通信可以通过Handler消息处 ... -
常见的几种排序方法
2016-03-07 18:47 768由于最近要应付面试,所以把几个常见的排序方法有复习了一下。 ... -
关于Fragment所需要知道的概念
2016-03-02 00:16 1530可以把Fragment想成Activity中的模块,这个模 ... -
Android沉浸式通知栏的一个开源库SystemBarTint简单使用
2016-02-20 20:54 4383什么是沉浸式设模式?沉浸模式计就是把用来导航的各种界面操作 ... -
Netty 4.0 实现心跳检测和断线重连
2016-02-17 21:42 32901一 实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心 ... -
Netty4.0 实现心跳检测和客户端断线重连
2016-02-17 21:41 1一 实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心 ... -
Netty4.0 实现心跳检测和客户端断线重连
2016-02-17 21:41 1一 实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心 ... -
Struts学习的总结
2016-02-06 21:07 1891一 Struts使用步骤 1 导入Struts jar包 2 ...
相关推荐
这些组件和效果的实现涉及到Android UI设计、事件处理、数据绑定、动画等多个方面,开发者需要对Android SDK有深入理解,同时熟悉Android Studio的使用。"MDStudySamples-master"项目为学习和实践这些概念提供了很好...
在提供的`Lsn26_SnackBar`项目中,你将找到关于SnackBar的各种示例,包括基本使用、添加操作按钮、改变样式和位置等。通过阅读源代码和运行示例,你可以深入理解如何在实际项目中灵活运用SnackBar。 总结来说,...
4. **堆叠管理**:当多个SnackBar需要显示时,LPSnackbar可以智能地管理它们的堆叠,避免遮挡或冲突。 5. **兼容性**:由于是独立的控件,LPSnackbar与UIKit框架兼容,可以在不同版本的iOS系统上运行。 在实际应用...
总结来说,Snackbar是Android开发中的一个重要组件,它在信息提示和用户交互方面提供了更多可能性。理解并熟练运用Snackbar,能够提升应用的用户体验,同时也展示了开发者对现代Android开发规范的遵循和理解。在实际...
`Snackbar`具有一定的可定制性,比如可以设置不同的持续时间(短时、长时)和添加一个操作按钮,让用户能够快速响应提示。 `Snackbar`的使用步骤大致如下: 1. **创建Snackbar实例**:首先,你需要通过`Snackbar....
4. **添加动作**: 如果需要,可以添加一个或多个动作到Snackbar,如`KSnack.Builder().addAction()`。 5. **自定义样式**: 通过设置`KSnack.Builder()`的各种属性来自定义Snackbar的样式,包括颜色、字体、动画等。...
5. **非阻塞交互**: 用户可以继续与页面的其他元素进行交互,而无需关闭 `Snackbar` 提示,这在多任务处理中特别有用。 6. **事件处理**: `Snackbar` 可以与事件绑定,比如点击关闭按钮或在特定时间自动消失,从而...
5. **代码结构**:DEMO可能包含一个自定义的Snackbar类,继承自`android.support.design.widget.Snackbar`,以便添加更多的自定义功能。这样可以在保留原有Snackbar特性的基础上,方便地扩展其行为。 6. **资源文件...
3. 可选地,可以通过` Snackbar#setAction()`添加一个操作按钮,传入文本和监听器。当用户点击时,监听器的`onAction()`方法会被调用。 4. 最后,调用`show()`方法来显示Snackbar。 示例代码: ```java View parent...
1. 创建一个新的布局文件(如`custom_snackbar.xml`)在`layout`目录下,包含Snackbar的内容视图和动作按钮,如果有的话。 2. 实现一个自定义的`Snackbar`类,覆盖`show()`方法,以便在需要时更改视图的位置。这可能...
8. **性能优化**:避免在短时间内连续显示多个 Snackbar,以免打扰用户。 9. **测试**:在多种设备和操作系统版本上进行测试,确保在各种环境下都能正常工作。 通过学习和实践以上知识点,你可以在 React Native ...
8. **批量管理**:支持一次性创建多个SnackBar,并按照设定的顺序依次显示。 9. **错误处理**:提供错误处理机制,如当无法显示SnackBar时给出提示或记录日志。 10. **国际化支持**:支持多语言,使应用更具全球化...
4. **显示SnackBar**:调用显示方法将SnackBar添加到当前视图控制器的视图上。 5. **处理用户交互**:如果设置了操作按钮,可以注册一个回调来处理用户的点击事件。 6. **隐藏SnackBar**:当需要隐藏SnackBar时,...
例如,你可以在一个函数中批量添加多个通知,或者在异步操作完成后调用`NotificationManager`。 总的来说,`react-notification`是一个功能强大且易于使用的React通知组件库,它能够帮助开发者快速实现UI中的...
这个压缩包可能包含了一个名为"SnackBar-master"的项目源码,这可能是一个示例项目或库,用于展示如何在Android应用中使用SnackBar。 首先,让我们深入了解一下SnackBar的基本概念。SnackBar是Android设计支持库中...
Android中的SnackBar是一个重要的UI组件,源自Design Support Library,它的主要作用是在界面底部提供短暂的通知,显示关键信息。SnackBar与Toast类似,但具有更多的交互性。它允许用户通过滑动手势来消除,同时还...
Flutter中的SnackBar是一个轻量级的通知组件,用于向用户显示短暂的信息,通常出现在屏幕底部,并在一段时间后自动消失。"Flutter-Snackbar:颤抖小吃店"这个标题以一种幽默的方式将SnackBar与小吃店相联系,形象地...
2. Snackbar:相比于Toast,Snackbar提供了更多的功能,如包含一个操作按钮、可设置持续时间以及与用户界面的交互。Snackbar通常出现在屏幕底部,告知用户一些关键信息,并提供一个快速响应的选项。 在Node.js环境...
可以通过`setAction()`方法为Snackbar添加一个可点击的操作按钮: ```java snackbar.setAction("撤销", new View.OnClickListener() { @Override public void onClick(View view) { // 操作按钮被点击时的逻辑 ...
然而,如果短时间内连续触发多个Toast,可能会导致信息堆积,影响用户体验。因此,最佳实践是实现一个全局的Toast管理器,确保同一时间只有一个Toast显示。例如,创建一个静态方法`Util.showToast(Context context, ...