温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用CoordinatorLayout实现ToolBar扩展与收缩

发布时间:2020-07-13 19:41:41 来源:网络 阅读:2717 作者:liuyvhao 栏目:移动开发

扩展ToolBar效果图如下:

使用CoordinatorLayout实现ToolBar扩展与收缩

要使用CoordinatorLayout先在gradle中加入compile 'com.android.support:design:23.4.0'

Activity布局:

<?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"       xmlns:tools="http://schemas.android.com/tools"       android:layout_width="match_parent"       android:layout_height="match_parent"       android:fitsSystemWindows="true"       tools:context="com.lg.collapsingdemo.ScrollingActivity">          <android.support.design.widget.AppBarLayout           android:id="@+id/app_bar"           android:layout_width="match_parent"           android:layout_height="350dp"           android:fitsSystemWindows="true"           android:theme="@style/AppTheme.AppBarOverlay">              <android.support.design.widget.CollapsingToolbarLayout               android:id="@+id/toolbar_layout"               android:layout_width="match_parent"               android:layout_height="match_parent"               android:background="@drawable/bg"               android:fitsSystemWindows="true"               app:contentScrim="?attr/colorPrimary"               app:layout_scrollFlags="scroll|exitUntilCollapsed">                  <android.support.v7.widget.Toolbar                   android:id="@+id/toolbar"                   android:layout_width="match_parent"                   android:layout_height="?attr/actionBarSize"                   app:layout_collapseMode="pin"                   app:popupTheme="@style/AppTheme.PopupOverlay" />              </android.support.design.widget.CollapsingToolbarLayout>       </android.support.design.widget.AppBarLayout>          <android.support.v4.widget.NestedScrollView           android:layout_width="match_parent"           android:layout_height="match_parent"           app:layout_behavior="@string/appbar_scrolling_view_behavior"           tools:showIn="@layout/activity_scrolling">              <TextView               android:layout_width="match_parent"               android:layout_height="match_parent"               android:text="@string/large_text"/>          </android.support.v4.widget.NestedScrollView>         </android.support.design.widget.CoordinatorLayout>

app:title设置的Title内容在布局展开的时候会变得大些,而在折叠的时候使字体过渡到默认值,注意,我们的title是在CollapsingToolbarLayout上面设置的,而不是在ToolBar上面

app:layout_collapseMode这个属性来设置子视图折叠模式,有两种:

固定模式:app:layout_collapseMode = "pin" 确保Toolbar在view折叠的时候最后固定在屏幕的顶部。   

视差模式:app:layout_collapseMode = "parallax" 在折叠的时候会有个视差折叠的效果。

app:layout_scrollFlags属性设置滑动的方式,以起到响应布局的作用

Flag包括:

  1. scoll: 所有想滚动出屏幕的view都需要设置这个flag- 没有设置这个flag的view将被固定在屏幕顶部。

  2. enterAlways: 这个flag让任意向下的滚动都会导致该view变为可见,启用快速“返回模式”。

  3. enterAlwaysCollapsed: 顾名思义,这个flag定义的是何时进入(已经消失之后何时再次显示)。假设你定义了一个最小高度(minHeight)同时enterAlways也定义了,那么view将在到达这个最小高度的时候开始显示,并且从这个时候开始慢慢展开,当滚动到顶部的时候展开完。

  4. exitUntilCollapsed: 同样顾名思义,这个flag时定义何时退出,当你定义了一个minHeight,这个view将在滚动到达这个最小高度的时候消失。

通过app:layout_behavior="@string/appbar_scrolling_view_behavior"属性来实现滚动布局。


Activity代码:

public class ScrollingActivity extends AppCompatActivity {          @Override       protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.activity_scrolling);           Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);           setSupportActionBar(toolbar);          }          @Override       public boolean onCreateOptionsMenu(Menu menu) {           getMenuInflater().inflate(R.menu.menu_scrolling, menu);           return true;       }          @Override       public boolean onOptionsItemSelected(MenuItem item) {           int id = item.getItemId();              if (id == R.id.action_settings) {               return true;           }           return super.onOptionsItemSelected(item);       }   }

ToolBar的收缩:

使用CoordinatorLayout实现ToolBar扩展与收缩

只是稍微修改下布局文件:

<?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"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     tools:context="com.lg.appbardemo.ScrollingActivity">     <android.support.design.widget.AppBarLayout         android:id="@+id/app_bar"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:fitsSystemWindows="true"         android:theme="@style/AppTheme.AppBarOverlay">             <android.support.v7.widget.Toolbar                 android:id="@+id/toolbar"                 android:layout_width="match_parent"                 app:layout_scrollFlags="scroll|enterAlways"                 android:layout_height="?attr/actionBarSize"                 app:layout_collapseMode="pin"                 app:popupTheme="@style/AppTheme.PopupOverlay" />     </android.support.design.widget.AppBarLayout>     <android.support.v4.widget.NestedScrollView         android:layout_width="match_parent"         android:layout_height="match_parent"         app:layout_behavior="@string/appbar_scrolling_view_behavior">         <TextView             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_margin="@dimen/text_margin"             android:text="@string/large_text" />     </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout>

扩展ToolBar源码地址:http://down.51cto.com/data/2222027

收缩ToolBar源码地址:http://down.51cto.com/data/2222230

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI