Android Develop——AppBarLayout

AppBarLayout簡(jiǎn)介

  • AppBarLayout是繼承LinearLayout實(shí)現(xiàn)的一個(gè)ViewGroup容器組件擂煞,布局方向?yàn)榇怪狈较蚓瘛ppBarLayout是在LinearLayout上加了一些材料設(shè)計(jì)概念,它可以讓你定制當(dāng)某個(gè)可滾動(dòng)View的滾動(dòng)手勢(shì)發(fā)生變化時(shí)茬底,其內(nèi)部的子View實(shí)現(xiàn)何種操作
  • 簡(jiǎn)單來(lái)說(shuō)就是當(dāng)某個(gè)ScrollView發(fā)生滾動(dòng)時(shí)征绎,可以定制頂部欄應(yīng)該執(zhí)行哪些動(dòng)作

AppBarLayout子View的動(dòng)作

  • 內(nèi)部的子view通過(guò)在布局中加app:layout_scrollFlags 設(shè)置執(zhí)行動(dòng)作
    • scroll:設(shè)置為scroll的view會(huì)隨著滾動(dòng)事件一起發(fā)生移動(dòng)
<android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?android:attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll" />
</android.support.design.widget.AppBarLayout>

![Uploading 2154124-3be36f546d6f5bbd_167511.gif . . .]

  • enterAlways
    子View添加layout_scrollFlags屬性的值是enterAlways時(shí),當(dāng)ScrollView向下滑動(dòng)時(shí)昔善,子View將直接向下移動(dòng)元潘,而不管ScrollView是否在滑動(dòng)。注意:要與Scroll搭配使用
 <android.support.v7.widget.Toolbar
                   android:layout_width="match_parent"
                   android:layout_height="?attr/actionBarSize"
                   app:title="AppbarLayout"
                   app:titleTextColor="@color/white"
                   app:layout_scrollFlags="scroll|enterAlways"
                   />
  • enterAlwaysCollapsed
    enterAlwaysCollapsed 是對(duì)enterAlways 的補(bǔ)充君仆,當(dāng)ScrollView 向下滑動(dòng)的時(shí)候柬批,滑動(dòng)View(也就是設(shè)置了enterAlwaysCollapsed 的View)下滑至折疊的高度,當(dāng)ScrollView 到達(dá)滑動(dòng)范圍的結(jié)束值的時(shí)候袖订,滑動(dòng)View剩下的部分開(kāi)始滑動(dòng)氮帐。這個(gè)折疊的高度是通過(guò)View的minimum height (最小高度)指定的。
 <android.support.v7.widget.Toolbar
                   android:layout_width="match_parent"
                   android:layout_height="200dp"
                   android:minHeight="?attr/actionBarSize"
                   app:title="AppbarLayout"
                   android:gravity="bottom"
                   android:layout_marginBottom="25dp"
                   app:titleTextColor="@color/white"
                   app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
                   />
  • exitUntilCollapsed
    當(dāng)ScrollView 滑出屏幕時(shí)(也就時(shí)向上滑動(dòng)時(shí))洛姑,滑動(dòng)View先響應(yīng)滑動(dòng)事件上沐,滑動(dòng)至折疊高度,也就是通過(guò)minimum height 設(shè)置的最小高度后楞艾,就固定不動(dòng)了参咙,再把滑動(dòng)事件交給 scrollview 繼續(xù)滑動(dòng)。
 <android.support.v7.widget.Toolbar
                   android:layout_width="match_parent"
                   android:layout_height="200dp"
                   android:minHeight="?attr/actionBarSize"
                   app:title="AppbarLayout"
                   android:gravity="bottom"
                   app:titleTextColor="@color/white"
                   app:layout_scrollFlags="scroll|exitUntilCollapsed"
                   />
  • snap
    意思是:在滾動(dòng)結(jié)束后硫眯,如果view只是部分可見(jiàn)蕴侧,它將滑動(dòng)到最近的邊界。比如两入,如果view的底部只有25%可見(jiàn)净宵,它將滾動(dòng)離開(kāi)屏幕,而如果底部有75%可見(jiàn)裹纳,它將滾動(dòng)到完全顯示择葡。
    ** 解釋:可能這段話有點(diǎn)難懂,解釋一下剃氧,就是說(shuō)敏储,比如在屏幕的頂部有個(gè)View ,高度200dp,我向上滑動(dòng)40%后停止朋鞍,也就 40% 滑出了屏幕已添,剩下的60%留在屏幕,那么這個(gè)屬性就會(huì)自動(dòng)將屏幕外的40% 滑回屏幕滥酥,結(jié)果的整個(gè)View都留在屏幕上更舞,相反,如果我向上將60%的部分滑出屏幕恨狈,然后停止滑動(dòng)疏哗,那么這個(gè)屬性會(huì)將剩下的40% 也自動(dòng)滑出屏幕,結(jié)果是整個(gè)View都在屏幕之外。這就是上面所說(shuō)的滑動(dòng)到最近的邊界返奉。**
 <android.support.v7.widget.Toolbar
                   android:layout_width="match_parent"
                   android:layout_height="200dp"
                   android:minHeight="?attr/actionBarSize"
                   app:title="AppbarLayout"
                   android:gravity="bottom"
                   app:titleTextColor="@color/white"
                   app:layout_scrollFlags="scroll|snap"
                   />

AppbarLayout 的幾個(gè)重要方法

介紹一下AppbarLayout幾個(gè)常用且重要的方法

  • addOnOffsetChangedListener 當(dāng)AppbarLayout 的偏移發(fā)生改變的時(shí)候回調(diào)贝搁,也就是子View滑動(dòng)。

  • getTotalScrollRange 返回AppbarLayout 所有子View的滑動(dòng)范圍

  • removeOnOffsetChangedListener 移除監(jiān)聽(tīng)器

  • setExpanded (boolean expanded, boolean animate)設(shè)置AppbarLayout 是展開(kāi)狀態(tài)還是折疊狀態(tài)芽偏,animate 參數(shù)控制切換到新的狀態(tài)時(shí)是否需要?jiǎng)赢?huà)

  • setExpanded (boolean expanded) 設(shè)置AppbarLayout 是展開(kāi)狀態(tài)還是折疊狀態(tài),默認(rèn)有動(dòng)畫(huà)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末雷逆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子污尉,更是在濱河造成了極大的恐慌膀哲,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件被碗,死亡現(xiàn)場(chǎng)離奇詭異某宪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)锐朴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)兴喂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人焚志,你說(shuō)我怎么就攤上這事衣迷。” “怎么了酱酬?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵壶谒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我膳沽,道長(zhǎng)汗菜,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任贵少,我火速辦了婚禮呵俏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘滔灶。我一直安慰自己,他們只是感情好吼肥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布录平。 她就那樣靜靜地躺著,像睡著了一般缀皱。 火紅的嫁衣襯著肌膚如雪斗这。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天啤斗,我揣著相機(jī)與錄音表箭,去河邊找鬼。 笑死钮莲,一個(gè)胖子當(dāng)著我的面吹牛免钻,可吹牛的內(nèi)容都是我干的彼水。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼极舔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼凤覆!你這毒婦竟也來(lái)了波材?” 一聲冷哼從身側(cè)響起搪花,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎栏尚,沒(méi)想到半個(gè)月后渤刃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拥峦,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年卖子,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了略号。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡揪胃,死狀恐怖璃哟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喊递,我是刑警寧澤随闪,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站骚勘,受9級(jí)特大地震影響铐伴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜俏讹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一当宴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泽疆,春花似錦户矢、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至瓢娜,卻和暖如春挂洛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背眠砾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工虏劲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓柒巫,卻偏偏與公主長(zhǎng)得像励堡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吻育,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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