说起Toast,大家一定很熟悉了,常常在网络连接不可用或者完成某个操作后,就会看到在手机屏幕的下方,显示出来一段提示文字,过一会儿又会自动消失。它就是Toast,跟Notification一样,也是一种android的消息提醒机制。经常看到的显示形态如下图:


代码的实现也很简单,如下:

Toast.makeText(this, "大家好,我是Toast", Toast.LENGTH_SHORT).show();Toast.makeText(this, R.string.custom_text, Toast.LENGTH_SHORT).show();
主要是用到了 makeText这个方法,这个方法传递参数的含义是:

第一个参数,要求引用一个上下文环境,也就是常常用到的Context

第二个参数,是toast将要显示的文字内容,就可以直接在代码内书写具体的字符串,也可以引用字符串文件内的id索引(如同上面代码的两种方式)

第三个参数,是指定Toast在屏幕上显示的时间,数值越大,显示时间越长,一般情况下,会使用Toast自带的两种常量:Toast.LENGTH_SHORT 和 Toast.LENGTH_LONG

最后,不要忘了,要调用show()这个方法啊,否则Toast就显示不出来了。


这是Toast最基本的用法,当然,我们今天要讲的重点肯定不是这些,否则我该被口水给淹死了。我们今天主要讲一下,关于Toast的自定义设置。

就像博客一开头提到的那样,Toast常常显示在屏幕的正下方,但是实际情况是,Toast给我提供了方法,可以自由设置它在屏幕具体显示的位置,比如下面这段代码:

Toast toast = Toast.makeText(this, R.string.custom_text, Toast.LENGTH_SHORT);toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 100);toast.show();
首先我们调用 makeText这个方法,初始化了一个Toast实例,然后调用 setGravity这个方法设置toast将要显示的屏幕位置,这个方法传参的含义是:

第一个参数,设定Toast显示位置的锚点,就是Toast这个视图的初始位置。

第二个参数,设定Toast从锚点开始,在屏幕坐标X轴上的偏移量,向右是正数,向左是负数。

第三个参数,设定Toast从锚点开始,在屏幕坐标Y轴上的偏移量,向下时正数,向上市负数。

代码内,我们设置它的锚点是屏幕的左上角,X轴方向偏移为0,Y轴方向,向下偏移100。我们来看看具体的效果图:

是不是跟我们代码的设置是一致的。当然了,我们也可以将Toast设置到屏幕的中心位置显示:

toast.setGravity(Gravity.CENTER, 0, 0);


关于自定义Toast显示位置的方法,通过上面的示例,大家应该是可以掌握了。

再接下来,我们来看一下,如何自定义Toast视图。

我们知道,Toast一般的显示样式就是一段提示文字,其实,我们可以自定义Toast的显示样式,它既可以显示文字,也可以显示我们设置的图片,以及各种各样复杂的布局。我们通过代码来看看这些事如何实现的:

LayoutInflater inflater = getLayoutInflater();View layout = inflater.inflate(R.layout.custom_toast,null);Toast toast = new Toast(getApplicationContext());toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);toast.setDuration(Toast.LENGTH_LONG);toast.setView(layout);toast.show();

我们可以看到,首先我们解析了一个自定义的xml布局文件,然后通过 setView 这个方法设置给了Toast,但是,在这段代码里,我们需要注意一点,我们在初始化Toast实例的时候,没有使用  makeText 这个方法,而是调用Toast的构造方法, new了一个Toast实例,在这里,我们一定要注意: 一般情况下,我们千万不要使用Toast的构造方法去实例化一个Toast,除非我们后续会调用setView这个方法,去自定义Toast的布局,否则,我们还是按照常规的makeText方法来实例化Toast。

除了调用setView 方法来自定义Toast的布局外,我们刚刚讲到的设置Toast的显示位置,依然在这种情况下适用,我们在这里,就将Toast的显示位置设置在了垂直方向的中心点,我再把自定义的xml布局文件贴出来,然后再把自定义的Toast显示效果图贴出来,看看效果如何:

<?xml version="1.0" encoding="UTF-8"?>        



这些就是关于自定义Toast的一些介绍,内容很少,也很简单,实际在平时的开发中,也很少用到这些自定义的效果,毕竟把界面弄得花里胡哨的,也不美观啊。不过对于一些特定的应用场景,需要丰富一下画面内容的话,自定义的Toast还是能够派上用场的,比如在情人节的时候,在app的主界面,突然显示出来一大束玫瑰,是不是很浪漫哈~

好了,不多扯了,今天的内容就这么一点点,想必大家一两眼就能够看完了,后面我们继续多分享一些大家常用的功能点,再结合我平时的工作经验,尽可能的细化每篇博客的内容,希望能够帮助到大家。

示例代码的下载地址:http://download.csdn.net/detail/pringlee2011/6975973



更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Google很快将发布Android(安卓)4.0(冰激凌三明治)源代码
  3. Intent介绍及Intent在Activity中的使用方法
  4. Android高手秘笈之View的绘制你应该知道的一切
  5. Android(安卓)adt v22.6.2 自动创建 appcompat_v7 解决方法,最低
  6. 关于Android的面试题目汇总
  7. 在非NDK编译条件下使用Android(安卓)Log函数
  8. Android前台画面和后台service之间通信的方法之Broadcast(转)
  9. APK解剖方法

随机推荐

  1. Android(安卓)入门前言之 --布局
  2. Android(安卓)Framework 框架系列之 Andr
  3. Android中如何取得联系人,如何得到一个联
  4. Android架构组件(三)——ViewModel
  5. 认识Android
  6. android Content Provider详解
  7. Android(安卓)Uevent 分析,从kernel到fram
  8. Android入门进阶教程(12)-SystemService
  9. 【译】Kotlin Android扩展(Kotlin Android
  10. 《Android(安卓)复杂的列表视图新写法 Mu