Android Material Design 之 Snackbar

概述

Snackbar 是一個(gè)類似于 Toast 的用來(lái)顯示消息的條狀控件惜辑。和 Toast 的不同之處在于约谈,Toast 是在屏幕下方偏上一點(diǎn)的位置彈出來(lái)芝囤;而 Snackbar 是從屏幕下方彈出來(lái),并顯示在屏幕底部诱告。

代碼

代碼和 Toast 類似

RelativeLayout rootLayout = (RelativeLayout) findViewById(R.id.root_layout);
Snackbar.make(rootLayout, "This is a snack bar!", Snackbar.LENGTH_SHORT).show();

可以看到 make 方法和 show 方法都是采用的 Toast 的設(shè)計(jì)風(fēng)格儒搭。

make 方法的第二個(gè)和第三個(gè)參數(shù)和 Toast 一樣吠架,第一個(gè)參數(shù)是指定 Snackbar 的父控件,表示想在哪個(gè) Layout 的底部顯示一個(gè) Snackbar搂鲫。
但是有時(shí)候雖然指定了一個(gè) Layout傍药,但是 Snackbar 并不是顯示在這個(gè) Layout 的底部。這是為什么魂仍?
看一下 make 方法里面的 parent 取得方法

final ViewGroup parent = findSuitableParent(view);

再看一下 findSuitableParent 方法

    private static ViewGroup findSuitableParent(View view) {
        ViewGroup fallback = null;
        do {
            if (view instanceof CoordinatorLayout) {
                // We've found a CoordinatorLayout, use it
                return (ViewGroup) view;
            } else if (view instanceof FrameLayout) {
                if (view.getId() == android.R.id.content) {
                    // If we've hit the decor content view, then we didn't find a CoL in the
                    // hierarchy, so use it.
                    return (ViewGroup) view;
                } else {
                    // It's not the content view but we'll use it as our fallback
                    fallback = (ViewGroup) view;
                }
            }

            if (view != null) {
                // Else, we will loop and crawl up the view hierarchy and try to find a parent
                final ViewParent parent = view.getParent();
                view = parent instanceof View ? (View) parent : null;
            }
        } while (view != null);

        // If we reach here then we didn't find a CoL or a suitable content view so we'll fallback
        return fallback;
    }

意思就是

  1. 如果傳進(jìn)去的 View 是 CoordinatorLayout拐辽,那么 View 就是 CoordinatorLayout。
  2. 否則擦酌,一直向上取 parent 知道 parent 是 android.R.id.content俱诸,返回 android.R.id.content。
  3. 否則赊舶,返回傳進(jìn)去的 View睁搭。

Snackbar 還可以在右側(cè)設(shè)置按鈕來(lái)添加事件赶诊,根據(jù) Material Design 的設(shè)計(jì)原則,最多只可以添加 1 個(gè)按鈕园骆。

RelativeLayout rootLayout = (RelativeLayout) findViewById(R.id.root_layout);
Snackbar.make(rootLayout, "This is a snack bar!", Snackbar.LENGTH_SHORT)
    .setAction("UNDO", new View.OnClickListener() {
      @Override
       public void onClick(View v) {
       }
     })
     .show();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末舔痪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子锌唾,更是在濱河造成了極大的恐慌辙喂,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸠珠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡秋麸,警方通過(guò)查閱死者的電腦和手機(jī)渐排,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)灸蟆,“玉大人驯耻,你說(shuō)我怎么就攤上這事〕纯迹” “怎么了可缚?”我有些...
    開封第一講書人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)斋枢。 經(jīng)常有香客問我帘靡,道長(zhǎng),這世上最難降的妖魔是什么瓤帚? 我笑而不...
    開封第一講書人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任描姚,我火速辦了婚禮,結(jié)果婚禮上戈次,老公的妹妹穿的比我還像新娘轩勘。我一直安慰自己,他們只是感情好怯邪,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開白布绊寻。 她就那樣靜靜地躺著,像睡著了一般悬秉。 火紅的嫁衣襯著肌膚如雪澄步。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,021評(píng)論 1 291
  • 那天和泌,我揣著相機(jī)與錄音驮俗,去河邊找鬼。 笑死允跑,一個(gè)胖子當(dāng)著我的面吹牛王凑,可吹牛的內(nèi)容都是我干的搪柑。 我是一名探鬼主播,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼索烹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼工碾!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起百姓,我...
    開封第一講書人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤渊额,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后垒拢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旬迹,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年求类,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奔垦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尸疆,死狀恐怖椿猎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寿弱,我是刑警寧澤犯眠,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站症革,受9級(jí)特大地震影響筐咧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜噪矛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一嗜浮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧摩疑,春花似錦危融、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至楷怒,卻和暖如春蛋勺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸠删。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工抱完, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刃泡。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓巧娱,卻偏偏與公主長(zhǎng)得像碉怔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子禁添,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 原文地址:http://www.android100.org/html/201606/06/241682.html...
    AFinalStone閱讀 911評(píng)論 0 1
  • 1. Toolbar 1.使用Toolbar撮胧,首先需要將系統(tǒng)的ActionBar隱藏,打開res/values/s...
    figure_ai閱讀 1,051評(píng)論 1 3
  • 春未老老翘,風(fēng)細(xì)柳斜斜芹啥。試上超然臺(tái)上看,半濠春水一城花铺峭。煙雨暗千家墓怀。寒食后,酒醒卻咨嗟卫键。休對(duì)故人思故國(guó)傀履,且將新火試...
    蕭垚呼和浩特閱讀 255評(píng)論 0 0
  • 有一個(gè)小女孩,她跟著媽媽在逛街永罚,這時(shí),她完全被兩個(gè)漂亮的洋娃娃吸引住了卧秘。媽媽看她不走了呢袱,就問:“看什么呢?...
    薛舒陽(yáng)閱讀 462評(píng)論 0 3
  • 鞏澤惠播報(bào): 今天翅敌,我為大家介紹的是《艾青詩(shī)選》的作家小傳羞福。 小時(shí)候,雖為地主家的兒子蚯涮,但卻被寄養(yǎng)在貧窮的農(nóng)婦家里...
    靜語(yǔ)微文閱讀 987評(píng)論 0 2