Toast是Android中常用的组件,下面介绍下Toast使用的几种方式和注意事项。

Toast的使用方式简单来说有下面五种:

1、默认的显示

// 第一个参数:当前的上下文环境。可用getApplicationContext()或Activity的context
// 第二个参数:要显示的字符串。也可是R.string中字符串ID
// 第三个参数:显示的时间长短。Toast默认的有两个LENGTH_LONG(长)和LENGTH_SHORT(短),也可以使用毫秒如2000ms
Toast toast=Toast.makeText(mContext, "默认的Toast", Toast.LENGTH_SHORT);
//显示toast信息
toast.show();

2、自定义位置显示(值改变位置)

Toast toast=Toast.makeText(mContext, "自定义显示位置的Toast", Toast.LENGTH_SHORT);
//第一个参数:设置toast在屏幕中显示的位置。这里设置是居中靠顶
//第二个参数:相对于第一个参数设置toast位置的横向X轴的偏移量,正数向右偏移,负数向左偏移
//第三个参数:相对于第一个参数设置toast位置的纵向y轴的偏移量,正数向下偏移,负数向上偏移
//如果你设置的偏移量超过了屏幕的范围,toast将在屏幕内靠近超出的那个边界显示
toast.setGravity(Gravity.TOP|Gravity.CENTER, -50, 100);
//屏幕居中显示,X轴和Y轴偏移量都是0
//toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();

3、带图片显示(能够显示一个图标)

Toast toast=Toast.makeText(mContext, "显示带图片的toast", 2000);
toast.setGravity(Gravity.CENTER, 0, 0);
//创建图片视图对象
ImageView imageView= new ImageView(mContext);
//设置图片
imageView.setImageResource(R.drawable.image);
//获得toast的布局
LinearLayout toastView = (LinearLayout) toast.getView();
//设置此布局为横向的
toastView.setOrientation(LinearLayout.HORIZONTAL);
//将ImageView在加入到此布局中的第一个位置
toastView.addView(imageView, 0);
toast.show();

4、完全自定义显示


LayoutInflater inflater = getLayoutInflater();
//通过制定XML文件及布局ID来填充一个视图对象
View layout = inflater.inflate(R.layout.test,(ViewGroup)findViewById(R.id.toast)); ImageView image = (ImageView) layout.findViewById(R.id.image);
//设置布局中图片视图中图片
image.setImageResource(R.drawable.toast_image); TextView title = (TextView) layout.findViewById(R.id.title);
//设置标题
title.setText("标题"); TextView text = (TextView) layout.findViewById(R.id.content);
//设置内容
text.setText("自定义Toast"); Toast toast= new Toast(mContext);
toast.setGravity(Gravity.CENTER , 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

5、在其他线程中调用显示

Toast只能运行在主UI线程,所以在线程中使用时必须结合Handler,通过发消息的方式最终在主线程显示Toast

Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { int what=msg.what; switch (what) { case 1: showToast(); break; } };public void showToast(){ Toast toast=Toast.makeText(getApplicationContext(), "Toast在其他线程中显示",         Toast.LENGTH_SHORT); toast.show();
} Runnable runnable = new Runnable(){@Override public void run() { handler.sendEmptyMessage(1); }
}

Toast使用注意事项:

1、Toast只能在UI线程当中使用,在非UI线程使用会抛异常;

2、使用Toast时最好定义一个全局的 Toast 对象,这样可以避免连续显示
Toast 时不能取消上一次 Toast 消息的情况(如果你有连续弹出 Toast 的情况,避免
使用 Toast.makeText)。

取消toast的方法为toast.cancel();

Android Toast的几种使用方式相关推荐

  1. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider...

    ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制.一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制.并且此种方式忽略了底层的数据存储实现,Cont ...

  2. Android数据的四种存储方式

    很清晰的思路,转自Android数据的四种存储方式 作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQL ...

  3. [转][Android]Android数据的四种存储方式

    android.database.sqlite 类 SQLiteQueryBuilder java.lang.Object android.database.sqlite.SQLiteQueryBui ...

  4. IPC机制(三)--->Android中的几种IPC方式

    目录 1.每日一句 2. 作者简介 3. Android中的几种IPC方式 3.1 使用Bundle 3.2 使用文件共享 3.3 使用Messenger 3.4  使用AIDL 3.4.1 服务端 ...

  5. android数据的五种存储方式

    Android提供了5种方式存储数据 1 使用SharedPreferences存储数据 它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息. 其存储位置在/da ...

  6. Android 系统(35)---Android 进程间通信的几种实现方式

    一.整体结构 下面将逐一介绍4种通讯方式 二.4种通讯方式 1.Activity Android内置了许多可供其他程序跨进程访问的Activity,比如跳至打电话页面(指定Action,uri跨进程访 ...

  7. android启动服务的生命周期,Android Service的两种启动方式以及生命周期

    Service的两种启动方式: 1.startService 2.bindService 注意: .在Android 5.0之后google出于安全的角度禁止了隐式声明Intent来启动Service ...

  8. 【环信集成指北】Android SDK 的两种导入方式

    环信AndroidSDK官网文档提供了两种导入方式:线上gradle远程连接导入和本地导入,线上导入方便快捷,本地导入较为灵活. 一.线上gradle远程连接导入 线上导入方便快捷,直接使用环信最新版 ...

  9. Android中启动一个服务,Android服务的两种启动方式

    前言:Service是Android的四大组件之一,也是可执行的程序.服务是Android中实现程序后台运行的解决方案,非常适合去执行那些不需要和用户交互而且还要求长期运行的任务.Service的启动 ...

  10. Android service的两种使用方式bindService和startService使用方式

    服务与多线程的区别: 服务仍然是运行在主线程中,而Thread则是真正的开启了一个新的线程来执行先关操作. 那为什么要用服务呢,初步理解是服务是为了更好地管理线程.试想,当我们在某一个activity ...

最新文章

  1. 如何用python实现邮箱发送信息
  2. QS最新世界大学排名发布,清华北大获史上最高名次
  3. 使用json-lib实现json to javabean
  4. Office365 Exchange Hybrid No.15 DNS切换及邮件传输排错
  5. 原创 深度 技术:WatchStor焦点周刊创刊号
  6. 微软软件保护平台 白皮书.pdf
  7. 犀牛重建曲面_犀牛建模渐消面处理
  8. php krsort重置索引,PHP数组处理函数举例
  9. Java list接口
  10. Hands-On Modeler (建模人员参与程序开发)
  11. Java 算法 摆动序列
  12. VScode使用Git拉取代码到本地提示“在签出前,请清理存储工作树”
  13. Darwin Streaming Server 安装流程
  14. SpringBoot 中解决跨域请求
  15. Linux电源管理(3)-Generic PM之reboot过程【转】
  16. PcShare2007 暗桩
  17. 【echarts】使用 echarts 实现中国新冠疫情实时数据地图
  18. 计算机主机配置一般有机箱主板cpu,电脑配置参数详解教程
  19. [Vue warn]: You may have an infinite update loop in watcher with express
  20. layui 表格数据源_「WPS办公助手」表格数据录入太慢?这个好用的技巧,轻松帮你搞定...

热门文章

  1. 基于微信小程序的毕业设计题目(19)php菜谱美食小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
  2. 计算机说课大赛ppt,计算机基础说课大赛省一等奖说课课件PPT作品
  3. mysql pxc介绍_MySQL高可用之PXC简介
  4. 最新版O泡易支付系统平台 PHP源码 第三方第四方免签支付平台系统 全开源可二开
  5. Mysql 计算年龄函数
  6. CSDN博客模板调查问卷
  7. 三极管、MOS管 可以反向导通吗?-----可以
  8. 明星也爱字体——赵丽颖秀气字体:(江湖少女两版)蓄势待发
  9. matlab与zemax,如何在ZEMAX和MATLAB之间通信
  10. kali利用fluxion无线网络钓鱼