Android开发必知--自定义Toast提示

  开发过Android的童鞋都会遇到一个问题,就是在打印Toast提示时,如果短时间内触发多个提示,就会造成Toast不停的重复出现,直到被触发的Toast全部显示完为止。这虽然不是什么大毛病,但在用户体验上听让人发狂的。本篇博文就是介绍怎么自定义Toast提示,不仅能完美的解决上述问题,而且还能自定义提示UI。

  先看一下效果图(左边是普通的toast提示,右边是自定义的):

 光看效果图,可能还感受不到什么不同,点击多次之后就会发现文章开头说的情况。

接着看一下自定Toast的开发步骤:

·第一步:准备自定义Toast的布局文件。

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:id="@+id/container"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent" 
 6     android:orientation="vertical" >
 7 
 8     <TextView
 9         android:id="@+id/txt_toast"
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:padding="5dp"
13         android:background="#ccc"
14         android:textColor="#fff" />
15     
16 </LinearLayout>

·第二步:编写一个独立的自定义Toast类或者方法,方便调用。

 1 public void myToast(String msg){
 2         if(toast == null){
 3             toast = new Toast(this);
 4         }
 5         toast.setDuration(0);
 6         toast.setGravity(Gravity.CENTER, 0, 0);
 7         LayoutInflater inflater = this.getLayoutInflater();
 8         LinearLayout toastLayout = (LinearLayout)inflater.inflate(R.layout.toast, null);
 9         TextView txtToast = (TextView)toastLayout.findViewById(R.id.txt_toast);
10         txtToast.setText(msg);
11         toast.setView(toastLayout);
12         toast.show();
13     }

·第三步:调用普通Toast提示,和自定义Toast,查看效果。布局文件只有两个按钮,比较简单就不贴了。

 1 bnToast.setOnClickListener(new OnClickListener() {
 2         @Override
 3         public void onClick(View arg0) {
 4             Toast.makeText(getApplicationContext(), "普通toast提示", Toast.LENGTH_SHORT).show();
 5         }
 6 });
 7 bnMyToast.setOnClickListener(new OnClickListener() {
 8         @Override
 9         public void onClick(View arg0) {
10             myToast("自定义toast提示");
11         }
12});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android Note

Toolbar悬停搜索框

2652
来自专栏Android干货

安卓开发_计时器(Chronometer)的简单使用

33211
来自专栏软件开发 -- 分享 互助 成长

Android log日志

LOG是用来记录程序执行过程的机制,它既可以用于程序调试,也可以用于产品运营中的事件记录。在Android系统中,提供了简单、便利的LOG机制,开发人员可以方便...

1869
来自专栏程序员互动联盟

【Android基础】Fragment 详解之Fragment介绍

Fragment在Android 3.0( API 11)引入,是为了支持在大屏上显示更加动态、灵活的UI,比如在平板和电视上。Fragment可以看作是嵌套的...

3688
来自专栏听雨堂

Android新手之旅(13) listview中数据重复的问题

非常奇怪,从第十条起,重复第一条。到20条时,再重复第一条。一直跟踪,发现数据都没有问题。这篇文章提到了问题的关键: http://laolang.xtmm.c...

2026
来自专栏我的博客

安卓开发之Activity传递参数

1、知识点:启动activity、注册activity、button绑定监听事件、传递参数、获取参数 2、传递参数以及绑定监听代码(注意如果绑定监听出现错误:需...

1874
来自专栏jianhuicode

Fragment 学习笔记(1)

网上关于Fragment相关的博客资料很多,写关于这个知识笔记是加深记忆,大神略过; 0x01 了解Fragment 当然看官方文档(http://www.an...

1835
来自专栏Android干货

创建一个新的安卓应用程序 设置主Activity

4187
来自专栏向治洪

Android scrollview嵌套webview滑动冲突的解决方案

在Android开发中有时我们需要在scrollview中嵌套webview这时你会发现这两者的滑动事件产生了冲突导致:webview很难被滑动,即使被滑动了...

58110
来自专栏程序员互动联盟

【Android基础】Fragment 详解之Fragment生命周期

Fragment的主要功能就是创建一个View,并且有一个生命周期来管理这个View的创建和销毁。Fragment的生命周期与Activity的生命周期类似,都...

3608

扫码关注云+社区