Material design library系列——Snackbar

前言

Hello各位小伙伴們大家好啊,有一陣子沒寫簡書了,不知道大家有沒有想我啊,哈哈哈哈~

咳咳,說點正事!其實一直想寫一個Material design系列的文章,由于前段時間比較忙,所以一直拖到現在,唉,慚愧啊!既然現在稍微有點時間了,那就開工吧!

Snackbar是什么

Snackbar 是一種針對操作的輕量級反饋機制,常以一個小的彈出框的形式,出現在手機屏幕下方或者桌面左下方。它們出現在屏幕所有層的最上方,包括浮動操作按鈕。

它們會在超時或者用戶在屏幕其他地方觸摸之后自動消失。Snackbar 可以在屏幕上滑動關閉。當它們出現時,不會阻礙用戶在屏幕上的輸入,并且也不支持輸入。屏幕上同時最多只能現實一個 Snackbar。

Android 也提供了一種主要用于提示系統消息的膠囊狀的提示框 Toast。Toast 同 Snackbar 非常相似,但是 Toast 并不包含操作也不能從屏幕上滑動關閉。

說了這么多,先來張gif圖看看。



看到了么,下面哪個黑黑的就是Snackbar了,首先我個人感覺這個要比Toast好看一些,那么為什么說他要比Toast好用呢?接下來慢慢給大家介紹~

Snackbar使用

在我們使用Material design庫之前,我們都要現在gradle文件中添加一行依賴compile 'com.android.support:design:25.3.1',以后的文章就不再繼續贅述了

基本使用其實很簡單,只需要一行代碼
Snackbar.make(mFloatingActionButton, "我是Sncakbar", Snackbar.LENGTH_LONG).show();
大家可以看到,使用起來跟Toast很類似。

添加Action

這里就到了與Toast不同的地方了,Toast只能看,不能做任何操作,但是我們的Snackbar不同,可以添加Action,舉個栗子

我們給Snackbar增加了一個action,并且點擊的時候談一個Toast出來,當然你可以做任何你想做的事情,代碼也很簡單。

Snackbar.make(mFloatingActionButton, "我是Sncakbar", Snackbar.LENGTH_LONG)
        .setAction("點我啊", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "你點擊了Action", Toast.LENGTH_SHORT).show();
            }
         })
          //調用該方法可以修改Action字體顏色
         .setActionTextColor(Color.RED)
         .show();

突發奇想,我能給Action設置文字顏色,那么我能不能給Snackbar的文本設置顏色呢,然后我直接snackbar.

...點完之后我郁悶了,MMP,并沒有提供這個方法啊。。。

好吧,沒有我去看你的源碼,我就不信找不到方法,于是乎就翻啊翻啊翻。功夫不負有心人,還真給我翻到了,看了源碼,發現make方法在調用inflater,好,點到SnackbarContentLayout里面去看看

哈哈哈,我在SnackbarContentLayout找到了這個TextView的id,既然找到了你的id就好辦了

看源碼的過程中發現Snackbar的父類BaseTransientBottomBar中有一個getView方法,返回值就是本身

既然拿到了snackbar本身那就findViewById啊,找到之后一個強轉,然后調用TextView的方法setTextColor就可以改變顏色了,上一波效果圖

哈哈,成了,顏色變成了藍色。什么,你想改變Snackbar的背景顏色,好吧,我來試試。

這里gif錄制軟件出了點問題,但是可以明顯看到,背景顏色換了,代碼也只需要一行,用之前拿到的view,直接設置BackgroundColor

總結

今天的Snackbar使用教程就講到這里,你們在gif里面看到的聯動效果和右下角的懸浮按鈕是用到了Material design庫里面的CoordinatorLayout和FloatingActionButton,至于效果后續再慢慢說,對了,這里附上一段谷歌 Material Design設計規范中的話,方便大家知道什么情況下我們應該使用Snackbar。

短文本

通常 Snackbar 的高度應該僅僅用于容納所有的文本,而文本應該與執行>的操作相關。Snackbar 中不能包含圖標,操作只能以文本的形式存在。

最多0-1個操作,不包含取消按鈕

當一個動作發生的時候,應當符合提示框和可用性規則。當有2個或者2個以上的操作出現時,應該使用提示框而不是 Snackbar,即使其中的一個是取消操作。如果 Snackbar 中提示的操作重要到需要打斷屏幕上正在進行的操作,那么理當使用提示框而非 Snackbar。

以上純屬于個人平時工作和學習的一些總結分享,如果有什么錯誤歡迎隨時指出,大家可以討論一起進步。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容