赞
踩
原文:https://www.jianshu.com/p/0e52adf8b7be
adding dependencies
implementation 'com.android.support:design:28.0.0'
1.CoordinatorLayout
CoordinatorLayout是用来组织它的子Views之间协作的一个父View。CoordinatorLayout默认情况下可理解成一个FrameLayout,它的布局方式默认是一层一层叠上去
组合使用
CoordinatorLayout是一种支持响应滚动手势的app bar布局与AppbarLayout组合的滚动布局(RecyclerView, NestedScrollView等)
滚动布局添加,如不添加响应布局AppbarLayout则不会响应滑动事件
app:layout_behavior = "@string/appbar_scrolling_view_behavior"
app:layout_behavior = "android.support.design.widget.AppBarLayout$ScrollingViewBehavior"
2.AppbarLayout
AppBarLayout 继承自LinearLayout,布局方向为垂直方向。
所以你可以把它当成垂直布局的LinearLayout来使用。
AppBarLayout是在LinearLayout上加了一些材料设计的概念,它可以让你定制当某个可滚动View的滚动手势发生变化时,其内部的子View实现何种动作。
实现动作 app:layout_scrollFlags
scroll
值设为scroll的View会跟随滚动事件一起发生移动。就是当指定的ScrollView发生滚动时,该View也跟随一起滚动,就好像这个View也是属于这个ScrollView一样
enterAlways
值设为enterAlways的View,当任何时候ScrollView往下滚动时,该View会直接往下滚动。而不用考虑ScrollView是否在滚动到最顶部还是哪里
exitUntilCollapsed
值设为exitUntilCollapsed的View,当这个View要往上逐渐“消逝”时,会一直往上滑动,直到剩下的的高度达到它的最小高度后,再响应ScrollView的内部滑动事件
enterAlwaysCollapsed
是enterAlways的附加选项,一般跟enterAlways一起使用,它是指,View在往下“出现”的时候,首先是enterAlways效果,当View的高度达到最小高度时,View就暂时不去往下滚动,直到ScrollView滑动到顶部不再滑动时,View再继续往下滑动,直到滑到View的顶部结束
snap
简单理解,就是Child View滚动比例的一个吸附效果。也就是说,Child View不会存在局部显示的情况,滚动Child View的部分高度,当我们松开手指时,Child View要么向上全部滚出屏幕,要么向下全部滚进屏幕,有点类似ViewPager的左右滑动
3.CollapsingToolbarLayout
用来对Toolbar进行再次包装的ViewGroup,主要是用于实现折叠的App Bar效果。它需要放在AppBarLayout布局里面,并且作为AppBarLayout的直接子View
app:layout_collapseMode
title
当布局内容全部显示出来时,title是最大的,但是随着View逐步移出屏幕顶部,title变得越来越小。你可以通过调用setTitle方法来设置title
contentScrim
内容纱布 根据滚动的位置是否到达一个阀值,来决定是否对View“盖上纱布”。可以通过setContentScrim(Drawable)来设置纱布的图片. 默认contentScrim是colorPrimary的色值
parallax
视差滚动子View 子View可以选择在当前的布局当时是否以“视差”的方式来跟随滚动\n
pin
子View可以选择是否在全局空间上固定位置,这对于Toolbar来说非常有用,因为当布局在移动时,可以将Toolbar固定位置而不受移动的影响
4.FloatingActionButton
5.NavigationView
6.NestedScrollView
7.MaterialCardView
//-------------------------------------------
1.先导依赖
implementation 'com.android.support:design:28.0.0'
<?xml version="1.0" encoding="utf-8"?> <!--CoordinatorLayout在此布局内编写--> <androidx.coordinatorlayout.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:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <com.google.android.material.appbar.AppBarLayout android:background="#03A9F4" android:layout_width="match_parent" android:layout_height="200dp"> <!--minHeight最小高度--> <ImageView android:minHeight="50dp" app:layout_scrollFlags="scroll|exitUntilCollapsed" android:src="@mipmap/ic_launcher_round" android:layout_width="match_parent" android:layout_height="200dp"></ImageView> </com.google.android.material.appbar.AppBarLayout> <!--$关联作用--> <androidx.core.widget.NestedScrollView app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:background="#E71414" android:text="aaaaaaaaaaaaaaaaa" android:layout_width="match_parent" android:layout_height="800dp"></TextView> <ImageView android:src="@mipmap/ic_launcher_round" android:layout_width="match_parent" android:layout_height="500dp"></ImageView> </LinearLayout> </androidx.core.widget.NestedScrollView> </androidx.coordinatorlayout.widget.CoordinatorLayout>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。