提示窗Toast

大家平时都经常用Toast,可是你是否发现,系统默认的Toast样式太过单调乏味呢?其实Toast的界面也允许开发者自行定制,只要定义好提示窗的布局文件,即可调用Toast类的setView方法设置自定义窗口画面。包括背景、对齐方式、窗口内部控件等等界面元素,均可由你自己定制。
下面是自定义提示窗的两个截图,分别展示了不同背景与不同对齐方式下的界面效果:

下面是自定义提示窗的代码例子:

             Toast toast = new Toast(this);View vv = LayoutInflater.from(this).inflate(R.layout.toast_hint, null);TextView tv_toast = (TextView) vv.findViewById(R.id.tv_toast);tv_toast.setText(text);LinearLayout ll_toast = (LinearLayout) vv.findViewById(R.id.ll_toast);ll_toast.setBackgroundColor(mBackground);toast.setView(vv);toast.setGravity(mGravity, 0, 0);toast.setDuration(duration);toast.show();

提示条Snackbar

Snackbar是Android Support Design Library库的一个新控件,与Toast相比,Snackbar不仅仅用来提示消息,还允许进行交互,从而改善了用户体验。
使用Snackbar需要导入android-support-design,同时design库依赖于android-support-v7-appcompat,所以design库与appcompat库要同时导入到工程中。另外,Snackbar最好配合控件CoordinatorLayout使用,因为这样Snackbar才能够像通知那样通过右滑手势取消。
Snackbar的用法与Toast类似,常用方法说明如下:
make : 构造一个Snackbar对象。可指定提示条的上级视图、提示消息文本、显示时长等信息。
setText : 设置提示消息的文本内容。
setAction : 设置交互按钮的文本与点击监听器。
setActionTextColor : 设置交互按钮的文本颜色。
setDuration : 设置提示消息的显示时长。
show : 显示提示条。

下面是演示提示条的两个截图,分别展示了滑动取消提示条效果,以及点击交互按钮的界面效果:
  

下面是演示用的布局文件内容:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="5dp" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><Buttonandroid:id="@+id/btn_snackbar_simple"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:text="显示简单提示条"android:textColor="@color/black"android:textSize="17sp" /><Buttonandroid:id="@+id/btn_snackbar_action"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:text="显示可交互提示条"android:textColor="@color/black"android:textSize="17sp" /></LinearLayout></LinearLayout><TextViewandroid:id="@+id/tv_hint"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_marginBottom="30dp"android:textColor="@color/black"android:textSize="17sp" /><android.support.design.widget.CoordinatorLayoutandroid:id="@+id/cl_container"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true" /></RelativeLayout>

下面是演示用的代码例子片段:

 public void onClick(View v) {if (v.getId() == R.id.btn_snackbar_simple) {Snackbar.make(cl_container, "把我往右滑动看看会发生什么事", Snackbar.LENGTH_LONG).show();} else if (v.getId() == R.id.btn_snackbar_action) {Snackbar.make(cl_container, "这是一个可交互的提示条", Snackbar.LENGTH_LONG).setAction("点我", new View.OnClickListener() {@Overridepublic void onClick(View v) {tv_hint.setText(Utils.getNowTime()+" 您轻轻点了一下Snackbar");}}).setActionTextColor(Color.YELLOW).show();}}

点击下载本文用到的自定义提示窗的工程代码

点此查看Android开发笔记的完整目录

Android开发笔记(一百二十七)活用提示窗Toast和Snackbar相关推荐

  1. Android开发笔记(二十七)对象序列化

    什么是序列化 程序中存储和传递信息,需要有个合适的数据结构,最简单的是定义几个变量,变量多了之后再分门别类,便成了聚合若干变量的对象.代码在函数调用时可以直接传递对象,但更多的场合例如与文件交互.与网 ...

  2. Android开发笔记(七十七)图片缓存算法

    ImageCache 由于手机流量有限,又要加快app的运行效率,因此好的app都有做图片缓存.图片缓存说起来简单,做起来就用到很多知识点,可算是集Android技术之大全了.只要理解图片缓存的算法, ...

  3. Android开发笔记(二十四)res目录的结构与配置

    res目录结构 res是Android项目工程中存放各类的目录,主要包括布局.图形与配置等等.res的子目录主要有: anim : 存放动画的描述文件 drawable : 存放各类图形的描述文件,包 ...

  4. Android开发笔记(四十七)Runnable接口实现多线程

    Runnable概述 Runnable接口可声明一连串的事务,常用于多线程处理.但是实现Runnable接口并不意味着开启了一个新线程,只是定义了接下来要做的事情,至于说这些事情要在主线程处理,还是在 ...

  5. Android开发笔记(九十七)图片的特效处理

    图片特效用到的函数 本文讲述的图片特效处理包括:怀旧.光照.光晕.底片.浮雕.模糊.锐化.黑白.冰冻.素描,所有这些特效都是基于一定的算法,对图像每个点的RGB值进行计算,并汇总所有点的计算结果生成新 ...

  6. Android开发笔记(八十七)几个修饰关键字

    原生native native是方法修饰符,表示该方法是由其他一种语言(如C/C++)实现的原生方法.其实native只在JNI接口中使用,java代码中只有原生方法的定义,具体的实现代码在其他语言( ...

  7. Android开发笔记(五十七)录像录音与播放

    媒体录制MediaRecorder MediaRecorder是Android自带的录制工具,通过操纵摄像头和麦克风完成媒体录制,既可录制视频,也可单独录制音频.其中对摄像头Camera的介绍参见&l ...

  8. Android开发笔记(三十七)按钮类控件

    Button与ImageButton Button是文本按钮(继承自TextView),而ImageButton是图像按钮(继承自ImageView).两者之间的区别在于: 1.Button即可显示文 ...

  9. Android开发笔记(二十九)使用SharedPreferences存取数据

    SharedPreferences使用场景 共享参数(SharedPreferences)是Android上的一个轻量级存储工具,存储结构是类似map的key-value键值对形式.它主要用于保存ap ...

最新文章

  1. 2020年春季学习信号与系统课程作业参考答案-第十一次作业
  2. 使用SDL打造游戏世界之入门篇 - 6
  3. Java黑皮书课后题第2章:2.5(金融应用:计算小费)编写一个程序,读入一笔费用与小费利率,计算小费和总钱数
  4. 【专题介绍】跨越 X 突破,音视频聚力新机遇
  5. shell 做加法运算_C语言探索之旅 | 第一部分第七课:运算那点事
  6. 如何使用NodeManager来控制WebLogic Server
  7. 【图像增强】基于matlab GSA灰度图像增强【含Matlab源码 1172期】
  8. CTS、CLS和CLR
  9. 你真的了解Franka吗?一文带你揭秘Franka常见问题,你想知道的都在这里!
  10. [BBC纪录片][2009][自然界最惊异的事件][Nature's.Most.Amazing.Events][中英字幕][蓝光720P高清][全6集][17.77GB]
  11. Python练习:炉石传说荣誉室返尘最优策略
  12. linux grep命令要查找的内容有双引号
  13. BUAA 数据结构总结——大作业(文本摘要生成)
  14. SequoiaDB巨杉数据库成为唯一入选 “硅谷2016 大数据地形图”中国厂商, 企业级市场超越MongoDB等海外产品...
  15. java 循环字母_java循环26个字母
  16. 非此即彼的逻辑错误_Argument常见逻辑错误及描述 【出国英语】
  17. 数据标注是什么,如何进行数据标注?
  18. 作为成员的结构体(作为结构体的成员的结构体)
  19. 充分利用计算机在教学中的作用,浅谈多媒体在教学中的作用
  20. 【错误记录】Android Studio 中 Gradle 配置报错 ( Can‘t determine type for tag ‘<item name=““ type=“String“>)

热门文章

  1. Leetcode每日一题:1095.find-in-mountain-array(山脉数组中查找目标值)
  2. 吴恩达|机器学习作业8.0.异常检测
  3. 反向传播算法的详细解释(下)
  4. utf—8在苹果手机上乱码_Xcode下的中文乱码问题
  5. 第7章[7.19] Grid行选择的多种场景和实现方式
  6. [Ext JS 4] 实战之Load Mask(加载遮罩)的显示与隐藏
  7. c语言 指针函数pdf,C语言指针经验总结(经典).pdf
  8. scala调用java库_从scala调用java时的java.lang.IllegalAccessError – solutions / workarounds?...
  9. python中的装饰器、装饰器模式_浅析Python装饰器以及装饰器模式
  10. java只读xml文件头_为了生成只读的接口和xml,并命名结尾为MapperR.java和MapperR.xml...