android 控件 隐藏toolbar-(CoordinatorLayout Toolbar AppbarLayout)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l331258747/article/details/51481428
AppbarLayout
CoordinatorLayout
Toolbar 顶栏,可滑动


CoordinatorLayout是这次新添加的一个增强型的FrameLayout,通过它可以实现很多东西:
例如:
1.界面向上滚动逐渐隐藏Toolbar;
2.在其中可以放置浮动的View,就像Floating Action Button。


<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/id_coordinatorlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">



AppBarLayout跟它的名字一样,把容器类的组件全部作为AppBar。
将AppBarLayout放在CoordinatorLayout中,就可以实现滚动效果。
本例中,TabLayout在界面滚动时,随着Toolbar的逐渐隐藏,将占据Toolbar的位置,
达到节省屏幕空间,界面动画效果的目的。
<android.support.design.widget.AppBarLayout
	android:id="@+id/id_appbarlayout"
	android:layout_width="match_parent"
	android:layout_height="wrap_content">


属性解析:
app:theme:指定Toolbar的样式,包括ActionbarToggle和popupMenu的指示图标颜色
app:popupTheme:指定popupMenu溢出后的样式
app:title:    指定Toolbar中主Title的内容


app:layout_scrollFlags的意思是:
设置的layout_scrollFlags有如下几种选项:
scroll: 所有想滚动出屏幕的view都需要设置这个flag- 没有设置这个flag的view将被固定在屏幕顶部。
enterAlways: 这个flag让任意向下的滚动都会导致该view变为可见,启用快速“返回模式”。
enterAlwaysCollapsed: 当你的视图已经设置minHeight属性又使用此标志时,你的视图只能以最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度。
exitUntilCollapsed: 当视图会在滚动时,它一直滚动到设置的minHeight时完全隐藏。


需要注意的是,后面两种模式基本只有在CollapsingToolbarLayout才有用,
而前面两种模式基本是需要一起使用的,也就是说,这些flag的使用场景,基本已经固定了。



<android.support.v7.widget.Toolbar
	android:id="@+id/id_toolbar"
	android:layout_width="match_parent"
	android:layout_height="?attr/actionBarSize"
	android:background="?attr/colorPrimary"
	app:layout_scrollFlags="scroll|enterAlways"		//设置上滑隐藏,下滑显示
	app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
	app:theme="@style/ThemeOverlay.AppCompat.ActionBar"
	app:title="@string/toolbar_title" />




Tabs选项卡,和ViewPager搭配使用可以增大界面的内容展示量,实现各种个性化分类内容展示而不互相干扰!
Google在Design support library中提供官方的Tab组件,它就是TabLayout。
相比Github上面开源的第三方库,这个更加简单易用。


有以下常用属性:
app:tabGravity="fill"  表示TabLayout中的Tabs要占满屏幕的width;
app:tabSelectedTextColor:Tab被选中字体的颜色;
app:tabTextColor:Tab未被选中字体的颜色;
app:tabIndicatorColor:Tab指示器下标的颜色;


<android.support.design.widget.TabLayout
	android:id="@+id/id_tablayout"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"
	app:tabGravity="fill"
	app:tabIndicatorColor="@color/main_white" />



为了使得Toolbar可以滑动,我们必须还得有个条件,就是CoordinatorLayout布局下包裹一个可以滑动的布局,比如 RecyclerView,NestedScrollView(经过测试,ListView,ScrollView不支持)具有滑动效果的组件。
并且给这些组件设置如下属性来告诉CoordinatorLayout,该组件是带有滑动行为的组件,然后CoordinatorLayout在接受到滑动时会通知AppBarLayout
中可滑动的Toolbar可以滑出屏幕了。app:layout_behavior=@string/appbar_scrolling_view_behavior
总结: 为了使得Toolbar有滑动效果,必须做到如下三点:
1.CoordinatorLayout必须作为整个布局的父布局容器。 
2.给需要滑动的组件设置 app:layout_scrollFlags=”scroll|enterAlways” 属性。 
3.给你的可滑动的组件,也就是RecyclerView 或者 NestedScrollView 设置如下属性:app:layout_behavior=@string/appbar_scrolling_view_behavior

<android.support.v7.widget.RecyclerView
	android:id="@+id/recyclerView"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"
	app:layout_behavior="@string/appbar_scrolling_view_behavior"/>


这是一个浮动按钮。由于FloatingActionButton是重写ImageView的,
所有FloatingActionButton拥有ImageView的一切属性。


属性介绍:
app:backgroundTint : FAB的背景色。
app:elevation      :FAB的阴影效果。
app:rippleColor    :设置涟漪的颜色,默认是由背景色生成的暗色调,可以自己指定。
app:pressedTranslationZ  :FAB动画效果,在它被按下的时候阴影就会增大。


<android.support.design.widget.FloatingActionButton
	android:id="@+id/id_floatingactionbutton"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:layout_gravity="bottom|end"
	android:src="@mipmap/ic_action_plusone"
	app:backgroundTint="@color/main_blue_light"
	app:elevation="6dp"
	app:pressedTranslationZ="12dp"
	app:rippleColor="@color/main_blue_dark" />




















展开阅读全文

没有更多推荐了,返回首页