Android默认的Toast太丑了,我们来封装一个花里胡哨的Toast吧,就叫ColoredToast。

效果:

Toast有一个setView方法,通过它我们可以设置自定义的布局,这里我只是加入了改变背景色,如果你有其它需求,比如加上图标也是可以的。

布局文件:一个FrameLayout和显示消息的TextView

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:id="@+id/toast_message"

android:layout_width="wrap_content"

android:layout_height="dp"

android:paddingStart="dp"

android:paddingEnd="dp"

android:gravity="center"

android:textSize="sp"

tools:text="This is a toast message" />

2.Java代码:

用LayoutInflater来加载布局,然后用setView将布局设置为Toast的根View,通过自定义方法来设置Toast的消息和背景色,这里背景色是给TextView设置的,假如你想加上图标和其它元素,通过findViewById来设置即可。

这里我用的是GradientDrawable来作为Toast的背景,setColor方法背景色,setCornerRadius设置圆角半径,最后将他作为TextView的背景就可以了。如果你不想用它,也可以直接使用xml文件来作为背景,不过这样就不方便灵活设置颜色了。

package com.cloud.customviews;

import android.content.Context;

import android.graphics.drawable.GradientDrawable;

import android.support.annotation.ColorRes;

import android.support.annotation.IntDef;

import android.support.annotation.NonNull;

import android.support.annotation.StringRes;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.TextView;

import android.widget.Toast;

public class ColoredToast extends Toast {

@IntDef(value = {

LENGTH_SHORT,

LENGTH_LONG

})

@interface Duration {}

private ColoredToast(Context context) {

super(context);

}

public static class Maker {

private Context mContext;

private ColoredToast mToast;

private View mToastView;

private TextView mTextMessage;

public Maker(Context context) {

mContext = context;

mToast = new ColoredToast(context);

mToastView = LayoutInflater.from(context).inflate(R.layout.toast_colored, null);

mTextMessage = mToastView.findViewById(R.id.toast_message);

}

/**

* Set text color and background color for toast by resource id

*/

public Maker setColor(@ColorRes int textColor, @ColorRes int backgroundColor) {

GradientDrawable drawable = new GradientDrawable();

drawable.setColor(mContext.getColor(backgroundColor));

drawable.setCornerRadius(mTextMessage.getLayoutParams().height / );

mToastView.setBackground(drawable);

mTextMessage.setTextColor(mContext.getColor(textColor));

return this;

}

/**

* Set position

* @see android.view.Gravity

*/

public Maker setGravity(int gravity, int xOffset, int yOffset) {

mToast.setGravity(gravity, xOffset, yOffset);

return this;

}

public ColoredToast makeToast(@StringRes int resId, @Duration int duration) {

mTextMessage.setText(resId);

mToast.setView(mToastView);

mToast.setDuration(duration);

return mToast;

}

public ColoredToast makeToast(@NonNull String text, @Duration int duration) {

mTextMessage.setText(text);

mToast.setView(mToastView);

mToast.setDuration(duration);

return mToast;

}

}

}

android toast设置背景颜色,Android 彩色Toast的实现代码相关推荐

  1. android toast设置背景颜色,android-自定义Toast消息文本颜色

    如何显示这样的定制Toast: 解决方法: 我们可以将SpannableString用作此消息的文本. 像这个块: public void showToast(){ SpannableString s ...

  2. android textview获取背景颜色,Android TextView背景颜色与背景图片设置

    Android TextView 背景颜色与背景图片设置,android textview 控件,android textview 背景, android textview 图片,android te ...

  3. Android添加程序背景颜色,Android小程序实现切换背景颜色

    本文实例为大家分享了Android实现切换背景颜色的具体代码,供大家参考,具体内容如下 (1)首先打开界面布局文件,添加两个Button xmlns:tools="http://schema ...

  4. android自定义主题背景颜色,Android 自定义SeekBar 实现分段显示不同背景颜色的示例代码...

    在最近的开发工作中,要实现一个调色板的进度条,SeekBar要分成10段显示不同颜色,功夫不负有心人,终于实现了这个功能,下面分享给大家 示例图: 1.自定义SeekBar import androi ...

  5. android 自定义menu 背景颜色,Android中设置Menu菜单的文字颜色为白色

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 开发者交流裙: 188168040 Android中设置Menu菜单的文字颜色为白色,一般情况下,Android中Menu菜单的title文字颜色为黑色, ...

  6. android 画圆角背景颜色,android圆角矩形有背景颜色

    android圆角矩形,渐变颜色,自定义 首先,在drawable目录下写一个xml,名字随便起(只要符合规范),代码如下: android:shape="rectangle" & ...

  7. android webview 设置文字颜色,android webView 修改页面字体颜色

    webview加载一个界面后,在onPageFinished中加入修改页面字体颜色css,如下String nightCode = ""; try { InputStream is ...

  8. android textview获取背景颜色,android – 从textview获取背景颜色而不使用ColorDrawable(API 11)...

    试试这个- public static int getBackgroundColor(TextView textView) { ColorDrawable drawable = (ColorDrawa ...

  9. android 设置activity背景图片,给Activity设置背景颜色

    为了使得错误提示更加显眼,再用Toast+振动效果之外考虑变换整个activity的背景颜色. 尝试一: activity并没像winform一样直接给个属性来设置,就想获取整个activity的la ...

最新文章

  1. Python生物信息学③提取差异基因
  2. 创建Swap交换空间
  3. Extra data: line 1 column 342004 (char 342003)
  4. C语言再学习 -- Xargs用法详解
  5. php的浏览历史怎么做,php浏览历史记录的方法
  6. 2017年第八届蓝桥杯国赛B组试题A-36进制-进制转换
  7. 尽梨了(贪心+dp)
  8. Cassandra1.2文档学习(5)—— Snitch
  9. matlab数字图像处理函数,MATLAB数字图像处理学习(二)|常用函数
  10. 物联网面临发展的主要难题是什么,物联网技术主要分为哪几类?
  11. R语言实战-读书笔记整理
  12. 数据库SQL语句之外键
  13. Oracle脱库脚本
  14. CodeBlocks下载安装的坑,无法编译成功
  15. ubuntu英伟达显卡驱动
  16. Java Keytool工具简介
  17. 电商业务中的五大机器学习问题!
  18. wpf,silverlight,wp7,winform等学习资料整合(一)
  19. 【计算机毕业设计】018母婴商城系统
  20. 认识黑客常用的入侵方法

热门文章

  1. 在线代答代码php,代答接入 打码免的使用入门以及函数使用详解 包含源码
  2. 一种二阶Biquad滤波器
  3. html三维查看软件,再教你一个装逼神器——蛋白质三维结构查看软件pymol
  4. 【开源电机驱动】H 桥驱动-硬件篇
  5. 五、降维——从SNE到t-SNE再到LargeVis
  6. Linux qt shell脚本,QT执行shell脚本或者执行linux指令
  7. 显卡接口标准:支持PCI Express 2.0和 PCI Express 16X 有何差别
  8. 动图怎么分解成图片?Gif图片如何在线分解
  9. websocket的简介与应用
  10. 透过结构看思考与表达