安卓Design包之CollapsingToolbarLayout(可摺疊的工具列布局)的簡單使用

來源:互聯網
上載者:User

標籤:

轉自:

CollapsingToolbarLayout的使用

注意:使用前需要添加Design依賴包,使用toolbar時需要隱藏標題頭

CollapsingToolbarLayout作用是提供了一個可以摺疊的Toolbar,它繼承至FrameLayout,給它設定layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控制項(如:ImageView、Toolbar)在響應layout_behavior事件時作出相應的scrollFlags滾動事件(移除螢幕或固定在螢幕頂端)。

NestedScrollView:它是support-v4包提供的控制項,繼承至FrameLayout, 並實現了NestedScrollingParent,NestedScrollingChild, ScrollingView介面. 

它的作用類似於Android.widget.ScrollView,不同點在於NestedScrollView支援嵌套滑動.

需實現的布局:

 最外層是CoorinatorLayout,然后里麵包含了AppBarlayout和NestedScrollView

AppBarLayout裡包含了CollspsingToolbar和Tableyout,它的作用是可以將所有的子控制項都當成一個整體

CollspsingToolbar裡面則包含了一個ImageView和ToolBar作為伸縮的地區

通過layout_collapseMode屬性來指定其內部的子控制項是摺疊還是固定在螢幕上方

 <!-- layout_collapseMode(摺疊模式)-有兩個值:                 1.parallax:在內容滾動時,CollapsingToolbarLayout中的View(比如ImageView)也可以同時滾動,                 實現視差滾動效果,通常和layout_collapseParallaxMultiplier(設定視差因子)搭配使用。                 2.pin - 當CollapsingToolbarLayout完全收縮後,Toolbar還可以固定在螢幕上。          -->

xml檔案:

<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:orientation="vertical"    tools:context="fanggao.qf.collapsingtoolbarlayout.MainActivity">   <!-- android:fitsSystemWindow = "true" 表示整個布局展示是整個螢幕出去狀態列,標題列和導覽列剩下的地區-->    <android.support.design.widget.AppBarLayout        android:id="@+id/layout_appbar"        android:layout_width="match_parent"        android:layout_height = "wrap_content"       >        <!--         app:expandedTitleMarginStart="10dp"        設定擴張時候(還沒有收縮時)title離螢幕左邊的距離         app:contentScrim="?attr/colorPrimary"        設定當完全CollapsingToolbarLayout摺疊(收縮)後的背景顏色        -->        <android.support.design.widget.CollapsingToolbarLayout            android:id="@+id/ctb"            android:layout_width="match_parent"            android:layout_height="250dp"            android:fitsSystemWindows="true"            app:contentScrim="?attr/colorPrimary"            app:expandedTitleMarginStart="10dp"            app:layout_scrollFlags="scroll|exitUntilCollapsed">               <ImageView            android:id="@+id/image"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:scaleType="centerCrop"            app:layout_collapseMode="parallax"            android:src = "@drawable/cat"            />        <!--標題-->        <android.support.v7.widget.Toolbar            android:id="@+id/toolbar"            android:layout_width="match_parent"            android:layout_height="30dp"            app:layout_collapseMode="pin"            app:title="Toolbar"/>        </android.support.design.widget.CollapsingToolbarLayout>        <!--選項卡-->        <android.support.design.widget.TabLayout            android:id="@+id/tabLayout"            android:layout_width="match_parent"            android:layout_height="wrap_content"            app:tabIndicatorColor="@color/colorAccent"            app:tabMode="scrollable"            app:tabSelectedTextColor="@color/colorAccent"            app:tabTextColor="@android:color/black"/>    </android.support.design.widget.AppBarLayout>    <android.support.v4.widget.NestedScrollView        android:id="@+id/nestedScrollView"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:fillViewport="true"        app:layout_behavior="@string/appbar_scrolling_view_behavior">        <android.support.v4.view.ViewPager            android:id="@+id/viewPager"            android:layout_width="match_parent"            android:layout_height="wrap_content"/>    </android.support.v4.widget.NestedScrollView></android.support.design.widget.CoordinatorLayout>

主程式:

public class MainActivity extends AppCompatActivity {    private Toolbar toolbar;    private ImageView image;    private ViewPager viewpager;    private TabLayout tabLayout;    private CollapsingToolbarLayout collapsingToolbarLayout;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initData();    }    private void initData() {        toolbar.setLogo(R.mipmap.ic_launcher);        setSupportActionBar(toolbar);        //設定返回按鈕        getSupportActionBar().setDisplayHomeAsUpEnabled(true);        //設定收縮展開toolbar字型顏色        collapsingToolbarLayout.setExpandedTitleColor(Color.WHITE);        collapsingToolbarLayout.setCollapsedTitleTextColor(Color.BLACK);        //設定tablayout與viewPager        viewpager.setAdapter(new TestViewPageAdapter());        tabLayout.setupWithViewPager(viewpager);    }    private void initView() {        toolbar = (Toolbar) findViewById(R.id.toolbar);        image = (ImageView) findViewById(R.id.image);        viewpager = (ViewPager) findViewById(R.id.viewPager);       tabLayout = (TabLayout) findViewById(R.id.tabLayout);       collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.ctb);    }    class TestViewPageAdapter extends PagerAdapter{        @Override        public Object instantiateItem(ViewGroup container, int position) {            TextView textView = new TextView(MainActivity.this);            textView.setGravity(Gravity.CENTER);            textView.setText("pager "+(position+1));            textView.setTextSize(30);            textView.setTextColor(Color.BLUE);            container.addView(textView);            return textView;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View)object);        }        @Override        public int getCount() {            return 5;        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view == object;        }/*獲得標題*/        /*該方法必須寫,不然tablayout不能顯示標題*/        @Override        public CharSequence getPageTitle(int position) {            return "TAB"+(position+1);        }    }}

效果:

滑動前

向下滑動後:

 

安卓Design包之CollapsingToolbarLayout(可摺疊的工具列布局)的簡單使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.