Snackbar-交互按鈕

一涯冠、簡介

  • Snackbar 是 Android 5.0 之后新出的一個控件身坐,屬于 com.android.support:design 包下

  • Snackbar 并不是 Toast 的替代品禽作,兩者各有不同的應用場景碉熄,只不過是 Snackbar 對 Toast 進行了擴展暇番,允許在提示當中加入一個可交互按鈕

二崩哩、簡單使用

2.1 要先在 app 的 build.gradle 中添加依賴
//個人認為與 V7 包的版本一致最好
 compile 'com.android.support:design:25.3.1'

2.2 簡單操作如下
Snackbar.make(view,"我是Snackbar",Snackbar.LENGTH_LONG).show();
  • 第一個參數(shù)是 view 噩翠,只要傳入當前界面布局的任意一個 view 都可以戏自,它會根據這個 view 來查找最外層的布局,用于確定 Snackbar 的位置伤锚,但是如果在找的過程中擅笔,找到 CoordinatorLayout ,那就會認為 CoordinatorLayout 為最外層布局

  • 第二個參數(shù)是 String 屯援,即:提示的信息

  • 第三個參數(shù)是 顯示多長時間的意思猛们,有三個可選參數(shù)

Snackbar.LENGTH_SHORT //事件短,大概 1.8 秒左右
Snackbar.LENGTH_LONG // 時間長玄呛,大概 3 秒左右
Snackbar.LENGTH_INDEFINITE // 永久顯示阅懦,需手動取消
  • 顯示效果如下:
    image

    注意:我這里的最外層布局為 LinearLayout ,如果換成 CoordinatorLayout 就不會覆蓋掉了
2.3 添加可交互按鈕
Snackbar.make(view,"我是Snackbar",Snackbar.LENGTH_LONG)
        .setAction("按鈕", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                
            }
}).show();
  • 通過 setAction 添加按鈕徘铝,默認只要點擊 Snackbar 就消失

  • 第一個參數(shù):按鈕顯示的文字

  • 第二個參數(shù):點擊監(jiān)聽

  • 顯示效果如下:


    image

三耳胎、主要注意的幾點:

  • 只有最外層的布局為 CoordinatorLayout 惯吕,Snackbar 才不會覆蓋掉 FloatingActionButton 。

  • 只有 Snackbar 配合 CoordinatorLayout 使用怕午,才會有側滑刪除的動畫效果废登,否則是沒有的。

  • Google 設計規(guī)范要求1郁惜,Snackbar 只以純文本的形式來顯示

  • Google 設計規(guī)范要求2堡距,同一個屏幕中最多只能同時出現(xiàn)一個 Snackbar兆蕉。

四、玩轉 Snackbar

4.1 修改 Snackbar 右側可點擊按鈕的顏色
        snackbar = Snackbar.make(view,"我是Snackbar",Snackbar.LENGTH_LONG)
                .setAction("按鈕", new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        snackbar.show();
        // 修改 Snackbar 右側可點擊按鈕的顏色
        snackbar.setActionTextColor(Color.WHITE);
  • 運行效果如下
image
4.2 修改背景色 和 Snackbar 左側文字顯示顏色
  • 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>
  • snackbar_text 是 Snackbar 左側顯示文字的 id 易稠,找到這個 id 并設置顏色就 OK 了,如下所示
snackbar = Snackbar.make(view,"我是Snackbar",Snackbar.LENGTH_INDEFINITE)
        .setAction("按鈕", new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    }
});
snackbar.show();
snackbar.setActionTextColor(Color.WHITE);
setSnackbarColor();
//通過 getView() 方法獲取 Snackbar 的父布局
View view = snackbar.getView();
if (view != null) {
    //設置背景色
    view.setBackgroundColor(getResources().getColor(R.color.colorAccent));
    //獲取 Snackbar 左側提示信息的控件驶社,修改字體顏色
    ((TextView) view.findViewById(R.id.snackbar_text)).setTextColor(Color.WHITE);
}
  • 顯示效果如下:


    image
4.3 在 Snackbar 中添加圖標
  • 實際上,添加圖標亡电,并不符合 Google 的設計規(guī)范和初衷,不建議添加圖片這里只附上一篇添加圖片的鏈接:http://www.reibang.com/p/cd1e80e64311
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末份乒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子零酪,更是在濱河造成了極大的恐慌,老刑警劉巖四苇,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異月腋,居然都是意外死亡,警方通過查閱死者的電腦和手機榆骚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妓肢,“玉大人捌省,你說我怎么就攤上這事碉钠【砭校” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵栗弟,是天一觀的道長。 經常有香客問我工闺,道長乍赫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任陆蟆,我火速辦了婚禮雷厂,結果婚禮上,老公的妹妹穿的比我還像新娘遍搞。我一直安慰自己罗侯,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布溪猿。 她就那樣靜靜地躺著,像睡著了一般纫塌。 火紅的嫁衣襯著肌膚如雪诊县。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天措左,我揣著相機與錄音依痊,去河邊找鬼。 笑死怎披,一個胖子當著我的面吹牛胸嘁,可吹牛的內容都是我干的。 我是一名探鬼主播凉逛,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼性宏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了状飞?” 一聲冷哼從身側響起毫胜,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诬辈,沒想到半個月后酵使,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡焙糟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年口渔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片穿撮。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡缺脉,死狀恐怖痪欲,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情枪向,我是刑警寧澤勤揩,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站秘蛔,受9級特大地震影響陨亡,放射性物質發(fā)生泄漏。R本人自食惡果不足惜深员,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一负蠕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧倦畅,春花似錦遮糖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赛不。三九已至,卻和暖如春踢故,著一層夾襖步出監(jiān)牢的瞬間惹苗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工淋纲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留触机,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓片任,卻偏偏與公主長得像蔬胯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容