当前位置: 移动技术网 > IT编程>移动开发>Android > Android 彩色Toast的实现代码

Android 彩色Toast的实现代码

2019年08月01日  | 移动技术网IT编程  | 我要评论

情债猫娜娜,稀土价格走势,峨眉山月歌的诗意

android默认的toast太丑了,我们来封装一个花里胡哨的toast吧,就叫coloredtoast。

github:https://github.com/imcloudfloating/designapp

效果:

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

布局文件:一个framelayout和显示消息的textview

<?xml version="." encoding="utf-"?>
 <framelayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content">
   <textview
     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" />
 </framelayout>

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;
     }
   }
 }

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网