Last active
August 4, 2016 03:03
-
-
Save jp1017/81ce65673a959e12b84156b1b3c0c35e to your computer and use it in GitHub Desktop.
没时间解释了,快使用Snackbar!——Android Snackbar花式使用指南 http://www.jianshu.com/p/cd1e80e64311
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 文 件 名: SnackerBarUtils | |
* 说 明: from: http://www.jianshu.com/p/cd1e80e64311 | |
*/ | |
import android.graphics.Color; | |
import android.support.design.widget.Snackbar; | |
import android.view.Gravity; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.widget.LinearLayout; | |
import android.widget.TextView; | |
import com.inst.instcarlauncher.R; | |
public class SnackbarUtils { | |
public static final int Info = 1; | |
public static final int Confirm = 2; | |
public static final int Warning = 3; | |
public static final int Alert = 4; | |
public static int red = 0xfff44336; | |
public static int green = 0xff4caf50; | |
public static int blue = 0xff2195f3; | |
public static int orange = 0xffffc107; | |
/** | |
* 短显示Snackbar,自定义颜色 | |
* @param view | |
* @param message | |
* @param messageColor | |
* @param backgroundColor | |
* @return | |
*/ | |
public static Snackbar ShortSnackbar(View view, String message, int messageColor, int backgroundColor){ | |
Snackbar snackbar = Snackbar.make(view,message, Snackbar.LENGTH_SHORT); | |
setSnackbarColor(snackbar,messageColor,backgroundColor); | |
return snackbar; | |
} | |
/** | |
* 长显示Snackbar,自定义颜色 | |
* @param view | |
* @param message | |
* @param messageColor | |
* @param backgroundColor | |
* @return | |
*/ | |
public static Snackbar LongSnackbar(View view, String message, int messageColor, int backgroundColor){ | |
Snackbar snackbar = Snackbar.make(view,message, Snackbar.LENGTH_LONG); | |
setSnackbarColor(snackbar,messageColor,backgroundColor); | |
return snackbar; | |
} | |
/** | |
* 自定义时常显示Snackbar,自定义颜色 | |
* @param view | |
* @param message | |
* @param messageColor | |
* @param backgroundColor | |
* @return | |
*/ | |
public static Snackbar IndefiniteSnackbar(View view, String message,int duration,int messageColor, int backgroundColor){ | |
Snackbar snackbar = Snackbar.make(view,message, Snackbar.LENGTH_INDEFINITE).setDuration(duration); | |
setSnackbarColor(snackbar,messageColor,backgroundColor); | |
return snackbar; | |
} | |
/** | |
* 短显示Snackbar,可选预设类型 | |
* @param view | |
* @param message | |
* @param type | |
* @return | |
*/ | |
public static Snackbar ShortSnackbar(View view, String message, int type){ | |
Snackbar snackbar = Snackbar.make(view,message, Snackbar.LENGTH_SHORT); | |
switchType(snackbar,type); | |
return snackbar; | |
} | |
/** | |
* 长显示Snackbar,可选预设类型 | |
* @param view | |
* @param message | |
* @param type | |
* @return | |
*/ | |
public static Snackbar LongSnackbar(View view, String message,int type){ | |
Snackbar snackbar = Snackbar.make(view,message, Snackbar.LENGTH_LONG); | |
switchType(snackbar,type); | |
return snackbar; | |
} | |
/** | |
* 自定义时常显示Snackbar,可选预设类型 | |
* @param view | |
* @param message | |
* @param type | |
* @return | |
*/ | |
public static Snackbar IndefiniteSnackbar(View view, String message,int duration,int type){ | |
Snackbar snackbar = Snackbar.make(view,message, Snackbar.LENGTH_INDEFINITE).setDuration(duration); | |
switchType(snackbar,type); | |
return snackbar; | |
} | |
//选择预设类型 | |
private static void switchType(Snackbar snackbar,int type){ | |
switch (type){ | |
case Info: | |
setSnackbarColor(snackbar,blue); | |
break; | |
case Confirm: | |
setSnackbarColor(snackbar,green); | |
break; | |
case Warning: | |
setSnackbarColor(snackbar,orange); | |
break; | |
case Alert: | |
setSnackbarColor(snackbar, Color.YELLOW,red); | |
break; | |
} | |
} | |
/** | |
* 设置Snackbar背景颜色 | |
* @param snackbar | |
* @param backgroundColor | |
*/ | |
public static void setSnackbarColor(Snackbar snackbar, int backgroundColor) { | |
View view = snackbar.getView(); | |
if(view!=null){ | |
view.setBackgroundColor(backgroundColor); | |
} | |
} | |
/** | |
* 设置Snackbar文字和背景颜色 | |
* @param snackbar | |
* @param messageColor | |
* @param backgroundColor | |
*/ | |
public static void setSnackbarColor(Snackbar snackbar, int messageColor, int backgroundColor) { | |
View view = snackbar.getView(); | |
if(view!=null){ | |
view.setBackgroundColor(backgroundColor); | |
((TextView) view.findViewById(R.id.snackbar_text)).setTextColor(messageColor); | |
} | |
} | |
/** | |
* 向Snackbar中添加view | |
* @param snackbar | |
* @param layoutId | |
* @param index 新加布局在Snackbar中的位置 | |
*/ | |
public static void SnackbarAddView(Snackbar snackbar, int layoutId, int index) { | |
View snackbarview = snackbar.getView(); | |
Snackbar.SnackbarLayout snackbarLayout=(Snackbar.SnackbarLayout)snackbarview; | |
View add_view = LayoutInflater.from(snackbarview.getContext()).inflate(layoutId,null); | |
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT); | |
p.gravity= Gravity.CENTER_VERTICAL; | |
snackbarLayout.addView(add_view,index,p); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment