亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

CoordinatorLayout&AppBarLayout&CollapsingToolbarLayout組合

2019-11-09 14:33:12
字體:
來源:轉載
供稿:網友

前言

       CoordinatorLayout是Material Design的重要組件,協調其它組件實現聯動,在實際使用過程中CoordinatorLayout通過協調調度子布局的形式實現觸摸動畫效果;AppBarLayout繼承LinearLayout,布局為垂直方法,所以你可以將其當做LinearLayout使用;CollapsingToolbarLayout的作用是提供了一個可以折疊ToolBar。三者的結合讓界面更加的美觀和簡潔。

效果~

    

Part 1、CoordinatorLayout的使用

在使用FloatingActionButton+SnackBar的時候經常遇到SnackBar覆蓋掉FloatingActionButton的情況,如下

    

當加上CoordinatorLayout之后

    

通過查看SnackBar的源碼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;    }可知,當你使用了CoordinatorLayout,此方法循環調用view.getParent()當檢測到CoordinatorLayout之后將view返回并將SnackBar添加到該View中,這也是為什么SnackBar不會覆蓋FloatingActionButton的原因。

SnackBar源碼分析:http://blog.csdn.net/weiwozhiyi/article/details/54600150

CoordinatorLayout還具有監聽滑動控件的滑動通過Behavior反饋到其他子控件并執行一些動畫的功能,這里所說的滑動控件包括RecyclerView、NestScrollView和ViewPager,ListView和ScrollView不可以。

Part 2、AppBarLayout的使用

布局代碼

<android.support.design.widget.CoordinatorLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.v7.widget.RecyclerView        android:id="@+id/recyclerview"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:clipChildren="false"        android:clipToPadding="false"        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>    <android.support.design.widget.AppBarLayout        android:layout_width="match_parent"        android:layout_height="?attr/actionBarSize">        <android.support.v7.widget.Toolbar            android:id="@+id/toolbar"            android:layout_width="match_parent"            android:layout_height="?attr/actionBarSize"            android:background="?attr/colorPrimary"            app:layout_scrollFlags="scroll|enterAlways"/>    </android.support.design.widget.AppBarLayout>    <android.support.design.widget.FloatingActionButton        android:id="@+id/fab"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="bottom|end"        android:layout_margin="16dp"        android:clickable="true"        android:src="@android:drawable/ic_dialog_email"        app:elevation="10dp"        app:fabSize="normal"        app:layout_behavior=".FabBehavior"        app:pressedTranslationZ="12dp"        app:rippleColor="#ff0"/></android.support.design.widget.CoordinatorLayout>tips:

1、  app:layout_behavior="@string/appbar_scrolling_view_behavior" : 為RecyclerView設置Behavior

2、  app:layout_scrollFlags="scroll|enterAlways" : 將Toolbar與設置的Behavior進行綁定

               scroll: 里面所有的子控件想要當滑出屏幕的時候view都必須設置這個flag,沒有設置flag的view將被固定在屏幕頂部。               enterAlways : 不管滑動到了什么位置只要向下滑動則顯示在頂部               enterAlwaysCollapsed:當你的視圖設置了minHeight屬性的時候,那么視圖只能以最小高度進入,只有當滾動視圖到達頂部時才擴大到完整高度。               exitUntilCollapsed:滾動退出屏幕,最后折疊在頂端。               snap:

效果~

    

當然你也可以使用android.support.v4.widget.NestedScrollView

    <android.support.v4.widget.NestedScrollView        android:layout_width="match_parent"        android:layout_height="match_parent"        app:layout_behavior="@string/appbar_scrolling_view_behavior">        <LinearLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:gravity="center_horizontal"            android:orientation="vertical">            ......            <android.support.v7.widget.CardView                android:layout_width="300dp"                android:layout_height="100dp"                android:layout_margin="16dp"                app:cardCornerRadius="9dp"                app:cardElevation="10dp"                app:contentPadding="5dp">                <ImageView                    android:layout_width="match_parent"                    android:layout_height="match_parent"                    android:src="@drawable/pic8"/>            </android.support.v7.widget.CardView>        </LinearLayout>    </android.support.v4.widget.NestedScrollView>效果~

    

Part 3、TabLayout+ViewPager的使用

布局代碼

<android.support.design.widget.CoordinatorLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_tab_layout"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.andly.administrator.andly_md10.TabLayoutActivity">    <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="?attr/actionBarSize"            app:layout_scrollFlags="scroll|enterAlways"            app:logo="@android:drawable/ic_dialog_email"            app:title="夢幻"/>        <android.support.design.widget.TabLayout            android:id="@+id/tablayout"            android:layout_width="match_parent"            android:layout_height="wrap_content"            app:tabBackground="@color/tabBackground"            app:tabGravity="fill"            app:tabIndicatorColor="@color/colorAccent"            app:tabMode="scrollable"            app:tabSelectedTextColor="@color/colorAccent"/>    </android.support.design.widget.AppBarLayout>    <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="match_parent"        app:layout_behavior="@string/appbar_scrolling_view_behavior"/></android.support.design.widget.CoordinatorLayout>tips:

1、讓ToolBar進行滑動隱藏需要設置app:layout_scrollFlags="scroll|enterAlways",TabLayout滑動不隱藏則不需要設置

2、為ViewPager、NestedScrollView、RecyclerView出現滑動控件就要設置app:layout_behavior="@string/appbar_scrolling_view_behavior"

3、app:tabMode="scrollable" : 可滾動的

效果~

    

Part 4、CollapsingToolbarLayout的使用

    <android.support.design.widget.AppBarLayout        android:layout_width="match_parent"        android:layout_height="260dp">        <android.support.design.widget.CollapsingToolbarLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            app:layout_scrollFlags="scroll|exitUntilCollapsed"            app:title="夢幻世界"            app:contentScrim="@color/colorPrimary"            app:statusBarScrim="@color/colorPrimary">            <ImageView                android:layout_width="match_parent"                android:layout_height="match_parent"                android:scaleType="centerCrop"                android:src="@drawable/mm"                app:layout_collapseMode="parallax"                app:layout_collapseParallaxMultiplier="1"                />            <android.support.v7.widget.Toolbar                android:id="@+id/toolbar"                android:layout_width="match_parent"                android:layout_height="?attr/actionBarSize"                android:background="?attr/colorPrimary"                app:layout_collapseMode="pin"                app:layout_scrollFlags="scroll|enterAlways"                app:logo="@android:drawable/ic_dialog_map"/>        </android.support.design.widget.CollapsingToolbarLayout>    </android.support.design.widget.AppBarLayout>tips:

1、AppBarLayout設置固定的高度,并且要實現折疊效果必須比toolbar的高度要高

2、CollapsingToolbarLayout最好設置成match_parent

3、app:layout_collapseMode="parallax" : parallax在折疊的時候會有折疊的視差效果,一般搭配layout_collapseParallaxMultiplier="0.5"視差的明顯成都;none沒有任何效果,網上滑動的時候會首先固定并推出去;pin固定模式,在折疊的時候最后固定在頂部

4、app:contentScrim="@color/colorPrimary_pink" : 內容部分的沉浸效果

5、app:statusBarScrim="@color/colorPrimary_pink" : 和狀態欄的沉浸效果效果~

    


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情中文网| 91久久在线观看| 国产日韩欧美视频| 欧美华人在线视频| 久久天天躁夜夜躁狠狠躁2022| 日韩女优在线播放| 欧美日韩国产麻豆| 欧美高清自拍一区| 亚洲图中文字幕| 亚洲成人在线网| 国产精欧美一区二区三区| 性视频1819p久久| 久久九九精品99国产精品| 国产99视频精品免视看7| 欧美另类第一页| 欧美一级片在线播放| 亚洲男人第一网站| 亚洲另类xxxx| 午夜精品福利在线观看| 亚洲国产精品悠悠久久琪琪| 亚洲午夜久久久影院| 欧美人与物videos| 国产成人亚洲综合91| 久久青草福利网站| 日韩av快播网址| 欧美日韩一区二区在线播放| 91精品一区二区| 精品网站999www| 精品久久久久久久久中文字幕| 国产精品扒开腿做爽爽爽男男| 日本精品视频网站| 亚洲第一天堂无码专区| 亚洲夜晚福利在线观看| 精品视频9999| 91夜夜未满十八勿入爽爽影院| 欧美日韩综合视频| 色婷婷av一区二区三区在线观看| 精品久久久久久久久久久久久| 乱亲女秽乱长久久久| 精品久久久久久久久中文字幕| 日韩精品亚洲视频| 午夜精品视频在线| 隔壁老王国产在线精品| 6080yy精品一区二区三区| 中文字幕日韩电影| 国产精品在线看| 久久精品国产96久久久香蕉| 久久久久久亚洲精品| 日本亚洲精品在线观看| 亚洲精品天天看| 日韩精品高清视频| 亚洲女人被黑人巨大进入al| 精品国产乱码久久久久久虫虫漫画| 精品中文字幕在线2019| 亚洲级视频在线观看免费1级| 91精品国产自产在线| 日韩在线视频免费观看| 欧美日韩成人在线视频| 国产精品自拍网| 国产成人精品最新| 中文字幕亚洲一区| 成人a视频在线观看| 国产精品久久久久久av福利| 欧美人交a欧美精品| 992tv成人免费视频| 国产成人精品午夜| 2020欧美日韩在线视频| 国产国语videosex另类| www.99久久热国产日韩欧美.com| 国产亚洲一区二区在线| 国内精品国产三级国产在线专| 国产精品自产拍在线观看中文| 色综合久久久久久中文网| 久久影院免费观看| 日韩精品在线观看一区| 久久久久久国产| 亚洲精品久久久久久久久久久久久| 亚洲自拍小视频免费观看| 亚洲乱码国产乱码精品精| 国产日产亚洲精品| 亚洲国产中文字幕久久网| 国产成人精品视频| 成人黄色在线免费| 欧美区二区三区| 国产精品久久久久高潮| 欧美电影免费观看| 日本精品久久中文字幕佐佐木| 国产精品影片在线观看| 欧美激情综合亚洲一二区| 精品色蜜蜜精品视频在线观看| 成人精品在线观看| 亚洲日本aⅴ片在线观看香蕉| 国产精品黄页免费高清在线观看| 91在线观看免费网站| 午夜精品一区二区三区在线| 成人激情在线观看| 欧美日本黄视频| 久久久久久久久网站| 国产精品极品美女在线观看免费| 正在播放欧美视频| 日本中文字幕成人| 精品国产区一区二区三区在线观看| 一区二区成人av| 91精品久久久久久久久久另类| 欧美国产日韩视频| 国产美女精品视频| 91九色国产在线| 国产精品99蜜臀久久不卡二区| 国产精品1区2区在线观看| 日韩电视剧在线观看免费网站| 91精品国产乱码久久久久久蜜臀| 97国产真实伦对白精彩视频8| 96pao国产成视频永久免费| www.日韩av.com| 按摩亚洲人久久| 国产精品免费在线免费| 午夜精品国产精品大乳美女| 国产精品白嫩美女在线观看| 亚洲乱亚洲乱妇无码| 91精品国产综合久久久久久蜜臀| 亚洲国产精品成人精品| 国产精品久久久久av| 97香蕉久久超级碰碰高清版| 日韩av在线网站| 成人高h视频在线| 日本精品久久久久久久| 日本精品性网站在线观看| 日韩有码片在线观看| 国产在线日韩在线| 91综合免费在线| 国语自产精品视频在线看一大j8| 久久成人这里只有精品| 欧美专区日韩视频| 欧美成人中文字幕在线| 国产91成人在在线播放| 法国裸体一区二区| 欧美成人中文字幕| 久久久精品日本| 久久亚洲成人精品| 欧美日韩福利在线观看| 国产精品91在线观看| 日韩精品免费在线视频观看| 日韩美女视频在线观看| 免费不卡欧美自拍视频| 欧美日韩精品在线视频| 亚洲精品免费在线视频| 九九热精品视频在线播放| 日韩欧美国产中文字幕| 97精品视频在线播放| 777777777亚洲妇女| 国产精品欧美久久久| 久久久久久久久久国产| 国产精品高清网站| 成人福利视频在线观看| 性色av一区二区三区在线观看| 中文字幕精品一区二区精品| 欧美另类极品videosbestfree| 91av免费观看91av精品在线| 亚洲欧美制服丝袜| 正在播放亚洲1区| 欧美亚洲国产视频| 久久久久国色av免费观看性色| 欧美亚洲成人精品| 久久久久国产精品www|