Android 彩色Toast实现
程序员文章站
2022-07-01 20:50:31
Android默认的Toast太丑了,我们来封装一个花里胡哨的Toast吧,就叫ColoredToast。 Github:https://github.com/imcloudfloating/DesignApp 效果: Toast有一个setView方法,通过它我们可以设置自定义的布局,这里我只是加 ......
android默认的toast太丑了,我们来封装一个花里胡哨的toast吧,就叫coloredtoast。
github:https://github.com/imcloudfloating/designapp
效果:
toast有一个setview方法,通过它我们可以设置自定义的布局,这里我只是加入了改变背景色,如果你有其它需求,比如加上图标也是可以的。
布局文件:一个framelayout和显示消息的textview
1 <?xml version="1.0" encoding="utf-8"?> 2 <framelayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="wrap_content" 5 android:layout_height="wrap_content"> 6 7 <textview 8 android:id="@+id/toast_message" 9 android:layout_width="wrap_content" 10 android:layout_height="48dp" 11 android:paddingstart="32dp" 12 android:paddingend="32dp" 13 android:gravity="center" 14 android:textsize="18sp" 15 tools:text="this is a toast message" /> 16 17 </framelayout>
2.java代码:
用layoutinflater来加载布局,然后用setview将布局设置为toast的根view,通过自定义方法来设置toast的消息和背景色,这里背景色是给textview设置的,假如你想加上图标和其它元素,通过findviewbyid来设置即可。
1 package com.cloud.customviews; 2 3 import android.content.context; 4 import android.graphics.drawable.gradientdrawable; 5 import android.support.annotation.colorres; 6 import android.support.annotation.intdef; 7 import android.support.annotation.nonnull; 8 import android.support.annotation.stringres; 9 import android.view.layoutinflater; 10 import android.view.view; 11 import android.widget.textview; 12 import android.widget.toast; 13 14 public class coloredtoast extends toast { 15 16 @intdef(value = { 17 length_short, 18 length_long 19 }) 20 @interface duration {} 21 22 private coloredtoast(context context) { 23 super(context); 24 } 25 26 public static class maker { 27 28 private context mcontext; 29 private coloredtoast mtoast; 30 private view mtoastview; 31 private textview mtextmessage; 32 33 public maker(context context) { 34 mcontext = context; 35 mtoast = new coloredtoast(context); 36 mtoastview = layoutinflater.from(context).inflate(r.layout.toast_colored, null); 37 mtextmessage = mtoastview.findviewbyid(r.id.toast_message); 38 } 39 40 /** 41 * set text color and background color for toast by resource id 42 */ 43 public maker setcolor(@colorres int textcolor, @colorres int backgroundcolor) { 44 gradientdrawable drawable = new gradientdrawable(); 45 drawable.setcolor(mcontext.getcolor(backgroundcolor)); 46 drawable.setcornerradius(mtextmessage.getlayoutparams().height / 2); 47 mtoastview.setbackground(drawable); 48 mtextmessage.settextcolor(mcontext.getcolor(textcolor)); 49 return this; 50 } 51 52 /** 53 * set position 54 * @see android.view.gravity 55 */ 56 public maker setgravity(int gravity, int xoffset, int yoffset) { 57 mtoast.setgravity(gravity, xoffset, yoffset); 58 return this; 59 } 60 61 public coloredtoast maketoast(@stringres int resid, @duration int duration) { 62 mtextmessage.settext(resid); 63 mtoast.setview(mtoastview); 64 mtoast.setduration(duration); 65 return mtoast; 66 } 67 68 public coloredtoast maketoast(@nonnull string text, @duration int duration) { 69 mtextmessage.settext(text); 70 mtoast.setview(mtoastview); 71 mtoast.setduration(duration); 72 return mtoast; 73 } 74 } 75 }
花里胡哨的toast打造完成!
上一篇: 设计模式之行为类模式PK