在实际开发中经常会给用户弹出相应的通知信息,可能有的弹出通知的界面会跟系统自带的界面有很大的差别,这个时候就需要开发者自己定义Toast的布局了

我在项目中也遇到了自定义Toast的需求,所以就将他封装了起来,方便以后继续使用

下面贴出的是自定义Toast的布局,可根据实际的要求更换布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/bg_toast"android:gravity="center_horizontal"android:orientation="vertical"android:paddingBottom="10dp"android:paddingTop="10dp" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:layout_marginRight="30dp"android:gravity="center_horizontal"android:orientation="horizontal" ><ImageViewandroid:id="@+id/ivStat"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/toast_sucess_icon" /><TextViewandroid:id="@+id/tvTitle"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginLeft="10dp"android:text="标题"android:textColor="#CCCCCC"android:textSize="17dp" /></LinearLayout><TextViewandroid:id="@+id/tvContent"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:layout_marginRight="30dp"android:layout_marginTop="10dp"android:gravity="center"android:text="内容"android:textColor="#B2B2B2"android:textSize="15dp" /></LinearLayout>

由于我在项目中需要弹出好几个不同样式的Toast,但大致布局都是一样的,只是里面的文字或者图片不同,所以在封装的时候里面会有多个弹出Toast的方法,在实际开发中可依据项目需求自己定义

package com.renrui.job.util;import com.renrui.job.R;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;/*** */
public class CustomToast
{private static Toast myToast;private static View viewMyToast;private static ImageView ivStat;private static TextView tvTitle;private static TextView tvContent;private static Toast myToastIntegral;private static View viewMyToastIntegral;private static TextView tvIntegral;private static TextView tvIntegralContent;private static Toast getMyToast(Context mContext, String title, String content){if (myToast == null){myToast = new Toast(mContext);viewMyToast = View.inflate(mContext, R.layout.view_mytoast, null);ivStat = (ImageView) viewMyToast.findViewById(R.id.ivStat);tvTitle = (TextView) viewMyToast.findViewById(R.id.tvTitle);tvContent = (TextView) viewMyToast.findViewById(R.id.tvContent);}// 标题,不会为空if (tvTitle.getVisibility() != View.VISIBLE){tvTitle.setVisibility(View.VISIBLE);}tvTitle.setText(title);// 内容有可能为空if (TextUtils.isEmpty(content)){if (tvContent.getVisibility() != View.GONE){tvContent.setVisibility(View.GONE);}} else{if (tvContent.getVisibility() != View.VISIBLE){tvContent.setVisibility(View.VISIBLE);}tvContent.setText(content);}myToast.setView(viewMyToast);return myToast;}/*** 提示成功信息* * @param mContext* @param title*            标题,不能为空* @param content*            内容可以为空*/public static void makeTextSucess(Context mContext, String title, String content){myToast = CustomToast.getMyToast(mContext, title, content);ivStat.setBackgroundResource(R.drawable.toast_sucess_icon);myToast.setDuration(1000);myToast.show();}public static void makeTextSucess(Context mContext, String title, String content, int duration){myToast = CustomToast.getMyToast(mContext, title, content);ivStat.setBackgroundResource(R.drawable.toast_sucess_icon);myToast.setDuration(duration);myToast.show();}/*** 提示失败信息*/public static void makeTextError(Context mContext, String title, String content){myToast = CustomToast.getMyToast(mContext, title, content);ivStat.setBackgroundResource(R.drawable.toast_error_icon);myToast.setDuration(1000);myToast.show();}/*** 提示警告信息*/public static void makeTextWarn(Context mContext, String title, String content){myToast = CustomToast.getMyToast(mContext, title, content);ivStat.setBackgroundResource(R.drawable.toast_warn_icon);myToast.setDuration(1000);myToast.show();}/*** 增加积分信息* * @param mContext* @param integral*            积分* @param content*            内容*/public static void makeTextAddIntegral(Context mContext, String integral, String content){if (myToastIntegral == null){myToastIntegral = new Toast(mContext);viewMyToastIntegral = View.inflate(mContext, R.layout.view_mytoast_integral, null);tvIntegral = (TextView) viewMyToastIntegral.findViewById(R.id.tvIntegral);tvIntegralContent = (TextView) viewMyToastIntegral.findViewById(R.id.tvIntegralContent);}// +分tvIntegral.setText("+ " + integral);// 内容有可能为空tvIntegralContent.setText(content);myToastIntegral.setView(viewMyToastIntegral);myToastIntegral.setDuration(1000);myToastIntegral.show();}
}

Android自定义控件之自定义Toast相关推荐

  1. Android自定义控件之自定义时钟

    Android自定义控件之自定义时钟 这个是我从别的开源项目中挖出来的,真心写的很不错,然后继续下来以便不时之需,直接上代码: WatcherBoard.java这个是自定义的时钟类 package ...

  2. Android开发之自定义Toast(带详细注释)

    因为工作需求,所以自己研究了自定义Toast,这里做出总结: 在此之前有一点需要提前说明:Toast与其他组件一样,都属于UI界面中的内容,因此在子线程中无法使用Toast弹出提示内容,如果强行在子线 ...

  3. android如何让自定义控件居中,Android自定义控件之自定义TextView,实现drawableLeft可以和文字一起居中...

    如何实现使用TextView的DrawableLeft使图片和文字居中显示呢??? 代码如下: 1.首先自定义一个类,继承TextViewpackage com.test.signcalendar.w ...

  4. android textview 楷体,Android自定义控件之自定义Text,画出米字格-FenGKun

    public class WordText extends TextView { /** 画笔 */ private Paint paint = new Paint(); // 定义画笔 public ...

  5. 玩转android自定义控件二——自定义索引栏listview

    带索引栏的listview,在android开发非常普遍,方便用户进行字母索引,就像微信通讯录这样: 今天,我们就从零到一实现这个具有索引栏的listview. 怎么实现这个控件了,我们应当梳理出一个 ...

  6. Android开发之自定义Toast(吐司)

    先看下效果一目了然: 直接上代码 Toast toast = Toast.makeText(getApplicationContext(), "带图片的Toast", Toast. ...

  7. Android实例-手机安全卫士(四十一)-选择自定义Toast背景

    一.目标 通过对话框选择并保存自定义的Toast背景        二.代码实现 1.复制layout文件夹中的model_setting_item.xml文件,以其为模板进行修改(取名为model_ ...

  8. android 自定义时钟,Android自定义控件之圆形时钟(续)

    在上篇文章中,我向大家介绍了如何通过自定义View一步步画出一个漂亮的圆形时钟.如果你还没看的话,我不建议你接着往下看,因为这篇文章是接着上篇的文章,如果直接看的话可能会不知所云,所以还是建议你先看一 ...

  9. android自定义view获取控件,android 自定义控件View在Activity中使用findByViewId得到结果为null...

    转载:http://blog.csdn.net/xiabing082/article/details/48781489 1.  大家常常自定义view,,然后在xml 中添加该view 组件..如果在 ...

  10. Android 自定义Toast实现多次触发只会显示一次toast

    #使用场景描述 当我们处于某个场景,例如一个按钮可以触发toast的显示,当你在多次点击按钮时,会多次触发toast的显示.而调用android原生的toast的makeText的方式所生产的toas ...

最新文章

  1. AI 创业周报第4期:AI芯片创企重磅发力,左手医生完成亿元 B 轮融资
  2. 代码之美 - 小函数总结
  3. 亮剑:PHP,我的未来不是梦(5)
  4. python可变参数和关键字参数位置_python中函数的默认参数和可变长参数如何排列?...
  5. Redis在windows下安装过程
  6. behavior php,YII2框架中behavior行为的理解与使用方法示例
  7. if else 的个小案例~
  8. java怎么从大到小排序元祖_在java中对元组列表进行排序的有效方法
  9. tcp校验和计算校验和例子_OSI参考模型和TCP/IP参考模型
  10. 测试监视器锁的等待/通知机制
  11. Android NDK 入门与实践
  12. Gather more plan statistics by gather_plan_statistics hint
  13. NAT篇 双剑合璧,无往不利——双向NAT
  14. crt是什么意思 windows编程_从零开始,学习windows编程 - hello.c的疑惑!
  15. PTAM的笔记(二)---ptam移植到android平台
  16. 使用PEG估值法简单选股(1)
  17. 首都师范 博弈论 2 1 1占优策略与占优策略均衡
  18. 类别名称转换为一一对应的数字标签
  19. 简单有效的通过js使用qrcode扫描二维码
  20. Future 模式详解(并发使用)

热门文章

  1. 2018-2019-1 20165319 《信息安全系统设计基础》第八周学习总结
  2. 20172324 2018-2019-1 《程序设计与数据结构》第三周学习总结
  3. 201671010140. 2016-2017-2 《Java程序设计》java学习第十六周
  4. ssh整合(spring + struts2 + hibernate)xml版
  5. 左侧固定 右侧自适应
  6. 表单提交后打印后台传过来的数据
  7. 用自己的语言解释一段简单的汇编
  8. win10软件安装出现错误代码2503/2502
  9. 内存共享【Delphi版】
  10. Linux常用基本命令( rmdir, rm, mv )