Android Toast的几种使用方式

2023-11-01

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();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Toast的几种使用方式 的相关文章

随机推荐

  • 装上这10个插件,PyCharm才是无敌的存在

    pycharm是一款强大的python集成开发环境 带有一整套python开发工具 今天就给大家介绍几款非常好用的插件 首先插件的下载方法 进入File gt Settings gt Plugins 根据需要搜索插件名称 记得是在Marke
  • db是哪个城市的缩写_全国所有城市拼音及缩写

    北京 BEIJING BJ 上海 SHANGHAI SH 天津 TIANJIN TJ 重庆 CHONGQING ZQ 阿克苏 AKESU AKS 安宁 ANNING AN 安庆 ANQING AQ 鞍山 ANSHAN AS 安顺 ANSHU
  • 分享一款开源堡垒机-jumpserver

    JumpServer是由FIT2CLOUD 飞致远 公司旗下一款开源的堡垒机 这款也是全球首款开源的堡垒机 使用 GNU GPL v2 0 开源协议 是符合 4A 规范的运维安全审计系统 使用 Python 开发 遵循 Web 2 0 规范
  • java basefont_itext 文本域 字体样式设置

    使用acroFields setFieldProperty nameField textfont baseFont null 的方式不能加粗 因为第三个参数必须是BaseFont类型 不能是Font类型 可以使用下面的方式加粗 BaseFo
  • 判断环形链表是否有环??返回环形链表的入口点!!

    上次笔者写了一篇大概有7个题的链表相关的题目 解析 感觉还不错 感兴趣的各位老铁 可以点一下链接进行欣赏 做几个与链表相关的题吧 https blog csdn net weixin 64308540 article details 128
  • 牧师与魔鬼 -- version2 动作分离

    目录 一 基本操作演练 1 下载 Fantasy Skybox FREE 构建自己的游戏场景 2 写一个简单的总结 总结游戏对象的使用 二 编程实践 1 牧师与魔鬼 动作分离版 面向对象的游戏编程 动作管理器的设计思想 动作管理器的设计类图
  • 【LeetCode算法系列题解】第21~25题

    CONTENTS LeetCode 21 合并两个有序链表 简单 LeetCode 22 括号生成 中等 LeetCode 23 合并K个升序链表 困难 LeetCode 24 两两交换链表中的节点 中等 LeetCode 25 K 个一组
  • 2018.1.22-2018.(几年前帖子,私密变公开后时间就变了)

    成为全职程序员 每天9点至17 50 中午11 30 13 00休息 不过我逐渐加班 第一天没加班 第二天加班一小时 第三天2小时 第4天3小时 编译了CGAL OPENCV PCL BOOST等 CGAL的LEDA库没法用 PCL读取点云
  • 【全文检索】sqlite-fts4和pgsql的全文检索对比

    sqlite fts4和pgsql的全文检索对比 一 sqlite fts4 建表语句 插入数据 全文检索 前缀查询 数据更新 二 postgreSQL 全文检索 建表语句 to tsvector 和to tsquery 构建索引 查询结果
  • 正则表达式常用参数

    正则表达式中常用的模式修正符有i g m s U x a D e 等 它们之间可以组合搭配使用 i 不区分 ignore 大小写 例如 abc i 可以匹配 abc aBC Abc g 全局 global 匹配 如果不带g 正则过程中字符串
  • 3.移植uboot-使板卡支持nor、nand

    在上一章 我们添加了nor nand启动后 uboot启动出如下图所示 上面的Flash failed 是属于uboot第二阶段函数board init r 里的代码 代码如下所示 位于arch arm lib board c 第二阶段 v
  • Mac 编译报错 Undefined symbols for architecture x86_64

    问题描述 使用cmake编译项目时 报错内容为 Undefined symbols for architecture x86 64 Obstacle run referenced from main in 1 o Obstacle Obst
  • Mysql 执行计划

    EXPLAIN 参考 https blog csdn net wanbin6470398 article details 82256436 https blog csdn net weixin 41558728 article detail
  • SpringBoot+MyBatis-Plus配置动态数据源

    1 pom xml添加依赖
  • xml与datatable类型互换

    已测 private DataTable ConvertXMLToDataSet string xmlData StringReader stream null XmlTextReader reader null try DataSet x
  • AES解码:BadPaddingException: pad block corrupted异常

    我是AES cbc模式 解码时遇到这个错误 解决问题的关键是把输出方式 由hex改为base64 public static String decode String secret String iv String content thro
  • 4399笔试印象

    C语言游戏开发工程师笔试已通过 16道选择 平衡二叉树 计算机网络tcp 哈希冲突的处理方法线性探测法 计算机神经网络的sigmod函数 等 三道编程 第一道忘记了 第二道贪心方法 题目轮廓 有5 10 15面额的纸笔用最少的张数来花费够多
  • 什么是 JxBrowser

    JxBrowser是一个商业跨平台 Java 库 可以让您将基于 Chromium 的 Web 浏览器控件集成到您的 Java Swing JavaFX 或 SWT 桌面应用程序中 以显示使用 HTML5 CSS3 JavaScript 构
  • IDEA--tomcat日志乱码

    0 实际使用效果 我tomacat乱码的问题 本来通过方法二改好了 某次测试 误以为乱码问题再次出现 其实不是乱码 于是使用方法一 对tomcat的logging进行修改 改成GBK那个 反而致使控制台乱码 真的乱码 又使用了一遍方法三 还
  • Android Toast的几种使用方式

    Toast是Android中常用的组件 下面介绍下Toast使用的几种方式和注意事项 Toast的使用方式简单来说有下面五种 1 默认的显示 第一个参数 当前的上下文环境 可用getApplicationContext 或Activity的