项目之TabLayout + AppBarLayout + CoordinatorLayout
来源:互联网 发布:全球通软件下载 编辑:程序博客网 时间:2024/04/29 05:37
项目之TabLayout + AppBarLayout + CoordinatorLayout,实现页签滑动,并且实现标题滑动隐藏。
CoordinatorLayout:
协调(Coordinate)其他组件,实现联动,使界面达到各式各样的滚动效果。
1、作为顶层布局
2、调度协调子布局
AppBarLayout
1、AppBarLayout继承自LinearLayout,布局方向为垂直方向。
2、AppBarLayout是在LinearLayou上加了一些材料设计的概念,它可以让你定制当某个可滚动View的滚动手势发生变化时,其内部的子View实现何种动作。
内部的子View通过在布局中加app:layout_scrollFlags设置执行的动作,包括
NestedScrollView依赖于ActionBar决定执行动作
layout_scrollFlags设置执行动作
scroll:当指定的ScrollView发生滚动时,该View也跟随一起滚动,就好像这个View也是属于这个ScrollView一样
enterAlways:当ScrollView往下滚动时,该View会直接往下滚动。而不用考虑ScrollView是否在滚动
exitUntilCollapsed:当这个View要往上逐渐“消逝”时,会一直往上滑动,直到剩下的的高度达到它的最小高度后,再响应ScrollView的内部滑动事件
enterAlwaysCollapsed:首先是enterAlways效果,当View的高度达到最小高度时,View就暂时不去往下滚动,直到ScrollView滑动到顶部不再滑动时,View再继续往下滑动,直到滑到View的顶部结束
需求依赖
compile 'com.android.support:design:25.3.0'
定义布局文件:
<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.ActionBar"> <!-- NestedScrollView依赖于ActionBar决定执行动作 layout_scrollFlags设置执行动作 scroll:当指定的ScrollView发生滚动时,该View也跟随一起滚动,就好像这个View也是属于这个ScrollView一样 enterAlways:当ScrollView往下滚动时,该View会直接往下滚动。而不用考虑ScrollView是否在滚动 exitUntilCollapsed:当这个View要往上逐渐“消逝”时,会一直往上滑动,直到剩下的的高度达到它的最小高度后,再响应ScrollView的内部滑动事件 enterAlwaysCollapsed:首先是enterAlways效果,当View的高度达到最小高度时,View就暂时不去往下滚动,直到ScrollView滑动到顶部不再滑动时,View再继续往下滑动,直到滑到View的顶部结束 --> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:minHeight="?attr/actionBarSize" app:layout_scrollFlags="scroll|enterAlways" app:title="新闻资讯" app:titleTextColor="@color/white" /> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabBackground="@color/colorPrimary" app:tabIndicatorColor="@color/white" app:tabSelectedTextColor="@color/white" app:tabTextAppearance="@style/TabLayoutTextSize" app:tabTextColor="@color/white" /> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <com.huading.myvolley.widget.LoadStateLayout android:id="@+id/ls_loadStateLayout" android:layout_width="match_parent" android:layout_height="match_parent"> </com.huading.myvolley.widget.LoadStateLayout></android.support.design.widget.CoordinatorLayout>
TabLyout标题的字体大小,styles.xml
<style name="TabLayoutTextSize"> <item name="android:textSize">16sp</item> </style>
oneFragment
package com.huading.myvolley.ui;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.support.v7.widget.Toolbar;import android.view.View;import com.huading.myvolley.R;import com.huading.myvolley.adapter.MyFragmentPagerAdapter;import com.huading.myvolley.base.BaseFragment;import com.huading.myvolley.widget.LoadStateLayout;import java.util.ArrayList;import butterknife.ButterKnife;import butterknife.InjectView;/** * 作者:LHZ on 2017/5/27 13:50 * 界面: */public class OneFragment extends BaseFragment { @InjectView(R.id.ls_loadStateLayout) LoadStateLayout lsLoadStateLayout; @InjectView(R.id.toolbar) Toolbar mTitleBar; @InjectView(R.id.tabs) TabLayout mTabs; @InjectView(R.id.viewPager) ViewPager mViewPager; @Override protected int getContentViewLayoutID() { return R.layout.one_fragment; } @Override protected void initViewsAndEvents(View view) { mTitleBar.setTitle("新闻资讯"); ArrayList<String> mTitleList = new ArrayList<>(); ArrayList<Fragment> mFragments = new ArrayList<>(); mTitleList.add("头条"); mTitleList.add("足球"); mTitleList.add("汽车"); mTitleList.add("笑话"); mFragments.add(new Fragment1()); mFragments.add(new Fragment2()); mFragments.add(new Fragment3()); mFragments.add(new Fragment4()); mTabs.setTabMode(TabLayout.MODE_FIXED); MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(getChildFragmentManager(), mFragments, mTitleList); mViewPager.setAdapter(pagerAdapter); mTabs.setupWithViewPager(mViewPager); } @Override protected void onFirstUserVisible() { } @Override protected void onUserVisible() { } @Override protected void onUserInvisible() { } @Override protected void DestroyViewAndThing() { ButterKnife.reset(this); }}
- 项目之TabLayout + AppBarLayout + CoordinatorLayout
- 【MaterialDesign】TabLayout,CollapsingToolbarLayout,AppBarLayout,CoordinatorLayout
- CoorDinatorLayout+AppBarLayout+TabLayout实现界面
- CoordinatorLayout 之 AppBarLayout
- CoordinatorLayout/AppBarLayout/Toolbar/TabLayout遮挡下方布局
- CoordinatorLayout配合AppBarLayout,Toolbar和TabLayout的使用
- CoordinatorLayout配合AppBarLayout,Toolbar和TabLayout的使用
- Android Design Support Library之CoordinatorLayout,AppBarLayout
- Android M新控件之AppBarLayout,CoordinatorLayout
- Android:Material Design之CoordinatorLayout+AppBarLayout使用
- Android Material Design 之 CoordinatorLayout + AppBarLayout
- UI之CoordinatorLayout、AppbarLayout、CollapsingToolbarLayout的使用
- Android Material Design(4) CoordinatorLayout,AppBarLayout,Toolbar以及TabLayout的使用
- CoordinatorLayout、Toolbar、TabLayout、AppBarLayout和RecyclerView组合可以滑动收起或显示Toolbar的demo
- CoordinatorLayout,AppBarLayout嵌套TabLayout实现滑动时标题栏隐藏,tab栏固定顶端
- Design之CoordinatorLayout+TabLayout+RecyclerView&CollapsingToolbarLayout
- Material Design之CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar
- Material Design 之 CoordinatorLayout + AppBarLayout 实现上滑隐藏ToolBar
- 线上和线下营销有“隔阂”?三大交融妙招助力效益最大化!
- 如何在Windows下开发Python
- Java学习之使用集合实现对字符串中元素指定格式输出
- 单元测试方法探索
- jsp和severlet的区别
- 项目之TabLayout + AppBarLayout + CoordinatorLayout
- 一个人如何搞定一场直播
- 对称加密算法-PBE算法
- oracle 精度问题
- Java语言基础简介(二)
- Connection to http://....* refused .解决
- Action/Service/DAO的应用解释
- Displets立体匹配算法
- Merge Sorted Array