MaterialDesign之自定義Snackbar
老規(guī)矩守屉,先上圖
截屏_20180603_130433.jpg
大家都知道這是由floatingactionbutton+snackbar組合實現(xiàn)的兴枯,其實網(wǎng)上都會說snackbar和toast一樣是一個輕量級的用戶交互控件肺稀,所以自定義布局沒啥意義登渣,那么到底可不可以實現(xiàn)呢?答案是肯定的唾那,而且很easy庞钢。
floatbtn = view.findViewById(R.id.item_introduct_fab);
floatbtn.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onClick(View v) {
initMySnackbar(v);
}
});
private void initMySnackbar(View v) {
//初始化一個snackbar
Snackbar snackbar = Snackbar.make(v,"",Snackbar.LENGTH_LONG);
//修改snackbar的背景顏色
snackbar.getView().setBackgroundColor(getResources().getColor(R.color.gray_100));
//獲取snackbar的源布局
Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView();
//隱藏源布局的控件
TextView textView = (TextView) layout.findViewById(android.support.design.R.id.snackbar_text);
textView.setVisibility(View.INVISIBLE);
//獲取自定義view
View snackView = LayoutInflater.from(getContext()).inflate(R.layout.my_snackbar, null);
ImageView qqshare = snackView.findViewById(R.id.my_snackbar_qqshare);
qqshare.setOnClickListener(this);
ImageView zoneshare = snackView.findViewById(R.id.my_snackbar_zoneshare);
zoneshare.setOnClickListener(this);
ImageView wechatshare = snackView.findViewById(R.id.my_snackbar_wechatshare);
wechatshare.setOnClickListener(this);
ImageView sinashare = snackView.findViewById(R.id.my_snackbar_sinashare);
sinashare.setOnClickListener(this);
//添加自定義布局到SnackbarLayout
layout.addView(snackView, 0);
//顯示snackbar
snackbar.show();
}
Snackbar.SnackbarLayout拔恰,它是一個水平LinearLayout對象,其子對象是一個TextView和一個Button基括。我們只需隱藏的TextView颜懊,并將您的視圖添加到Snackbar.SnackbarLayout。