Android Toast的几种使用方式
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的几种使用方式相关推荐
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider...
ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制.一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制.并且此种方式忽略了底层的数据存储实现,Cont ...
- Android数据的四种存储方式
很清晰的思路,转自Android数据的四种存储方式 作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQL ...
- [转][Android]Android数据的四种存储方式
android.database.sqlite 类 SQLiteQueryBuilder java.lang.Object android.database.sqlite.SQLiteQueryBui ...
- IPC机制(三)--->Android中的几种IPC方式
目录 1.每日一句 2. 作者简介 3. Android中的几种IPC方式 3.1 使用Bundle 3.2 使用文件共享 3.3 使用Messenger 3.4 使用AIDL 3.4.1 服务端 ...
- android数据的五种存储方式
Android提供了5种方式存储数据 1 使用SharedPreferences存储数据 它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息. 其存储位置在/da ...
- Android 系统(35)---Android 进程间通信的几种实现方式
一.整体结构 下面将逐一介绍4种通讯方式 二.4种通讯方式 1.Activity Android内置了许多可供其他程序跨进程访问的Activity,比如跳至打电话页面(指定Action,uri跨进程访 ...
- android启动服务的生命周期,Android Service的两种启动方式以及生命周期
Service的两种启动方式: 1.startService 2.bindService 注意: .在Android 5.0之后google出于安全的角度禁止了隐式声明Intent来启动Service ...
- 【环信集成指北】Android SDK 的两种导入方式
环信AndroidSDK官网文档提供了两种导入方式:线上gradle远程连接导入和本地导入,线上导入方便快捷,本地导入较为灵活. 一.线上gradle远程连接导入 线上导入方便快捷,直接使用环信最新版 ...
- Android中启动一个服务,Android服务的两种启动方式
前言:Service是Android的四大组件之一,也是可执行的程序.服务是Android中实现程序后台运行的解决方案,非常适合去执行那些不需要和用户交互而且还要求长期运行的任务.Service的启动 ...
- Android service的两种使用方式bindService和startService使用方式
服务与多线程的区别: 服务仍然是运行在主线程中,而Thread则是真正的开启了一个新的线程来执行先关操作. 那为什么要用服务呢,初步理解是服务是为了更好地管理线程.试想,当我们在某一个activity ...
最新文章
- Linux那些事儿 之 戏说USB(6)好戏开始了
- 图像补运算:ptr反色处理
- Centos6.5 rpm方式指定目录安装JDK
- mysql数据类型总结
- Win10如何远程连接Windows Server 2008,以及提示“您的凭证不工作”问题解决
- aftool提示15天未更新_微信版本更新至7.0.15 视频号新增3种功能
- Linux起不来,如何修复
- 第十一节:特性(常见的特性标签、自定义特性、特性的使用案例)
- js 验证用户输入的是否为数字、检查只能为数字
- exfat最佳单元大小_双动圈四喇叭单元的头戴式耳机,DACOM HF002上手体验
- StringBuffer和String,StringBuilder的区别?
- 命令行cmd跳转到其他地址
- web前端开发初学者必看的学习路线图课程内容分享
- 由1 2 3 4可以组成多个十百 无重复的数字
- tsm linux文件备份命令,IBM TSM简单使用文档
- 通过完美python注释,打印类的帮助文档
- 苹果手机解压缩软件_Mac用户必备的几款压缩与解压缩软件!滴!滴!滴!
- Oracle RMAN无法删除归档一例
- 好用的BUG、内存泄露捕捉工具 EurekaLog v6.0.11 Enterprise For D5-D2007 简体中文汉化版
- Win10自动更新永久关闭,有效的Win10强制更新关闭方法,禁止windows10自动更新,禁止update medic service ,win10显示更新并关机没有单独的关机按钮
热门文章
- CAD专用卸载修复工具,一键完全彻底卸载删除CAD软件的专用卸载工具
- MyBatis与JPA的区别是什么
- “私域”和“会员制”有什么区别?
- linux 查看链接文件,Linux下的链接文件详解
- 深耕智慧园区 看龙田科技与华为的“默契”
- 曲面局部理论介绍——从曲面的概念、基本形式到高斯曲率及其 Pthyon 计算
- 构建自己的Aleax查询服务
- 考研倒计时一幕刷屏!网友:这一定是最接近梦想的人!
- 小样本学习(FSL):Few-shot Learning 综述【模型微调(Fine-tunning)、数据增强、迁移学习(Transfer Learning)】
- 语句覆盖、条件覆盖(分支覆盖)、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖 的区别