What is Snackbar?
Snackbar是Android Support Design Library庫中的一個控件,效果是可以在屏幕底部彈出消息,作用與使用方法都與Toast類似。(圖見下文啦)
使用套路
1.Snackbar需要引入com.android.support:design庫
打開module對應的gradle.build文件,在dependencies中添加這一行語句(后面的版本號按需改變)
compile 'com.android.support:design:23.3.0'
2.Snackbar普通用法
Sanckbar的原型為
Snackbar.make(view,"this is message",showtime).setAction("ActionName",ction).show();
用起來可以是這樣
Snackbar.make(view,"This is normal SnackBar Msg",Snackbar.LENGTH_SHORT)
.setAction("ActionName", new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SnackBarActivity.this,"You clicked SnackBar Action",Toast.LENGTH_SHORT).show();
}
}).show();
效果如下(左側為message,右側為可以響應的action按鈕)


還可以通過setActionTextColor方法來修改action文件的顏色

自定義Snackbar
Snackbar用起來是夠簡單的,但是花樣不多啊,Snackbar沒有提供其他改變樣式的函數,所以我們就diy吧
據說這是Snackbar的布局文件
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/snackbar_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="14dp"
android:paddingBottom="14dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:textAppearance="@style/TextAppearance.Design.Snackbar.Message"
android:maxLines="2"
android:layout_gravity="center_vertical|left|start"
android:ellipsize="end"
android:textAlignment="viewStart"/>
<Button
android:id="@+id/snackbar_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:layout_marginStart="0dp"
android:layout_gravity="center_vertical|right|end"
android:paddingTop="14dp"
android:paddingBottom="14dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:visibility="gone"
android:textColor="?attr/colorAccent"
style="?attr/borderlessButtonStyle"/>
</merge>
根據以上布局,有一個TextView和一個Button,很明顯TextView對應Snackbar的Message,Button對應右側的Action,那么這樣就好吧辦了,通過findViewById獲取到TextView控件的引用,然后就可以"為所欲為"啦。
來個簡單的例子
Snackbar snackbar=Snackbar.make(v,"This is normal SnackBar Msg",Snackbar.LENGTH_SHORT)
.setAction("ActionName", new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SnackBarActivity.this,"You clicked SnackBar Action",Toast.LENGTH_SHORT).show();
}
});
snackbar.setActionTextColor(Color.YELLOW);//設置action顏色
View view=snackbar.getView();
view.setBackgroundColor(Color.GRAY);//設置背景顏色
TextView msg= (TextView) view.findViewById(R.id.snackbar_text);
msg.setTextColor(Color.GREEN);//設置左側message顏色
snackbar.show();
效果

其他的玩法
還可以在Snackbar里面添加圖標,以后繼續。
