11package com .blankj .utilcode .util ;
22
33import android .content .Context ;
4+ import android .graphics .Color ;
45import android .graphics .PorterDuff ;
56import android .graphics .PorterDuffColorFilter ;
67import android .graphics .drawable .ColorDrawable ;
@@ -212,10 +213,11 @@ public void run() {
212213 cancel ();
213214 sToast = Toast .makeText (Utils .getApp (), text , duration );
214215 // solve the font of toast
215- TextView tvMessage = ( TextView ) sToast .getView ().findViewById (android .R .id .message );
216+ TextView tvMessage = sToast .getView ().findViewById (android .R .id .message );
216217 TextViewCompat .setTextAppearance (tvMessage , android .R .style .TextAppearance );
217218 tvMessage .setTextColor (msgColor );
218- setBgAndGravity ();
219+ sToast .setGravity (gravity , xOffset , yOffset );
220+ setBg (tvMessage );
219221 sToast .show ();
220222 }
221223 });
@@ -229,13 +231,14 @@ public void run() {
229231 sToast = new Toast (Utils .getApp ());
230232 sToast .setView (view );
231233 sToast .setDuration (duration );
232- setBgAndGravity ();
234+ sToast .setGravity (gravity , xOffset , yOffset );
235+ setBg ();
233236 sToast .show ();
234237 }
235238 });
236239 }
237240
238- private static void setBgAndGravity () {
241+ private static void setBg () {
239242 View toastView = sToast .getView ();
240243 if (bgResource != -1 ) {
241244 toastView .setBackgroundResource (bgResource );
@@ -247,7 +250,27 @@ private static void setBgAndGravity() {
247250 ViewCompat .setBackground (toastView , new ColorDrawable (bgColor ));
248251 }
249252 }
250- sToast .setGravity (gravity , xOffset , yOffset );
253+ }
254+
255+ private static void setBg (final TextView tvMessage ) {
256+ View toastView = sToast .getView ();
257+ if (bgResource != -1 ) {
258+ toastView .setBackgroundResource (bgResource );
259+ tvMessage .setBackgroundColor (Color .TRANSPARENT );
260+ } else if (bgColor != COLOR_DEFAULT ) {
261+ Drawable tvBg = toastView .getBackground ();
262+ Drawable messageBg = tvMessage .getBackground ();
263+ if (tvBg != null && messageBg != null ) {
264+ tvBg .setColorFilter (new PorterDuffColorFilter (bgColor , PorterDuff .Mode .SRC_IN ));
265+ tvMessage .setBackgroundColor (Color .TRANSPARENT );
266+ } else if (tvBg != null ) {
267+ tvBg .setColorFilter (new PorterDuffColorFilter (bgColor , PorterDuff .Mode .SRC_IN ));
268+ } else if (messageBg != null ) {
269+ messageBg .setColorFilter (new PorterDuffColorFilter (bgColor , PorterDuff .Mode .SRC_IN ));
270+ } else {
271+ toastView .setBackgroundColor (bgColor );
272+ }
273+ }
251274 }
252275
253276 private static View getView (@ LayoutRes final int layoutId ) {
0 commit comments