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. Linux那些事儿 之 戏说USB(6)好戏开始了
  2. 图像补运算:ptr反色处理
  3. Centos6.5 rpm方式指定目录安装JDK
  4. mysql数据类型总结
  5. Win10如何远程连接Windows Server 2008,以及提示“您的凭证不工作”问题解决
  6. aftool提示15天未更新_微信版本更新至7.0.15 视频号新增3种功能
  7. Linux起不来,如何修复
  8. 第十一节:特性(常见的特性标签、自定义特性、特性的使用案例)
  9. js 验证用户输入的是否为数字、检查只能为数字
  10. exfat最佳单元大小_双动圈四喇叭单元的头戴式耳机,DACOM HF002上手体验
  11. StringBuffer和String,StringBuilder的区别?
  12. 命令行cmd跳转到其他地址
  13. web前端开发初学者必看的学习路线图课程内容分享
  14. 由1 2 3 4可以组成多个十百 无重复的数字
  15. tsm linux文件备份命令,IBM TSM简单使用文档
  16. 通过完美python注释,打印类的帮助文档
  17. 苹果手机解压缩软件_Mac用户必备的几款压缩与解压缩软件!滴!滴!滴!
  18. Oracle RMAN无法删除归档一例
  19. 好用的BUG、内存泄露捕捉工具 EurekaLog v6.0.11 Enterprise For D5-D2007 简体中文汉化版
  20. Win10自动更新永久关闭,有效的Win10强制更新关闭方法,禁止windows10自动更新,禁止update medic service ,win10显示更新并关机没有单独的关机按钮

热门文章

  1. CAD专用卸载修复工具,一键完全彻底卸载删除CAD软件的专用卸载工具
  2. MyBatis与JPA的区别是什么
  3. “私域”和“会员制”有什么区别?
  4. linux 查看链接文件,Linux下的链接文件详解
  5. 深耕智慧园区 看龙田科技与华为的“默契”
  6. 曲面局部理论介绍——从曲面的概念、基本形式到高斯曲率及其 Pthyon 计算
  7. 构建自己的Aleax查询服务
  8. 考研倒计时一幕刷屏!网友:这一定是最接近梦想的人!
  9. 小样本学习(FSL):Few-shot Learning 综述【模型微调(Fine-tunning)、数据增强、迁移学习(Transfer Learning)】
  10. 语句覆盖、条件覆盖(分支覆盖)、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖 的区别