当前位置:   article > 正文

协调者布局_Design_介绍及使用_协调者布局nestedscrollview

协调者布局nestedscrollview

原文:https://www.jianshu.com/p/0e52adf8b7be
adding dependencies

implementation 'com.android.support:design:28.0.0'
  • 1

1.CoordinatorLayout
CoordinatorLayout是用来组织它的子Views之间协作的一个父View。CoordinatorLayout默认情况下可理解成一个FrameLayout,它的布局方式默认是一层一层叠上去
组合使用
CoordinatorLayout是一种支持响应滚动手势的app bar布局与AppbarLayout组合的滚动布局(RecyclerView, NestedScrollView等)

滚动布局添加,如不添加响应布局AppbarLayout则不会响应滑动事件

app:layout_behavior = "@string/appbar_scrolling_view_behavior" 
  • 1
app:layout_behavior = "android.support.design.widget.AppBarLayout$ScrollingViewBehavior" 
  • 1

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'
  • 1
<?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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/105614?site
推荐阅读
相关标签
  

闽ICP备14008679号