1. 程式人生 > >Android用CoordinatorLayout實現Toolbar隱藏和摺疊

Android用CoordinatorLayout實現Toolbar隱藏和摺疊

CoordinatorLayout是Android Design Support Library中提供的控制元件
效果圖:
這裡寫圖片描述
程式碼:
ScrollingActivity中

package com.jremm.rolechina.coo;

import android.os.Bundle;
import android.support.design.widget.CollapsingToolbarLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.design
.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.ImageView; import com.jremm.rolechina.R; public class ScrollingActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate
(savedInstanceState); setContentView(R.layout.coo_layout); Toolbar toolbar = (Toolbar) this.findViewById(R.id.toolbar); setSupportActionBar(toolbar); // 設定標題 CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing
_toolbar); collapsingToolbar.setTitle("哆啦A夢"); } }

coo_layout.xml佈局中

<?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:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:fitsSystemWindows="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"

            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:collapsedTitleGravity="left"
            app:expandedTitleGravity="left|bottom"
            app:collapsedTitleTextAppearance="@style/zwenzi"
            app:expandedTitleTextAppearance="@style/zkwenzi"
            >

            <ImageView
                android:id="@+id/backdrop"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                android:scaleType="centerCrop"
                android:src="@drawable/mao"
                />

            <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/ThemeOverlay.AppCompat.Light" />

        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>

    <!--滑動控制元件-->
    <include layout="@layout/content_scrolling" />
</android.support.design.widget.CoordinatorLayout>

引用佈局content_scrolling.xml中

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView
    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"

    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.jremm.rolechina.coo.ScrollingActivity"
    >

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/tu4"
        android:scaleType="fitXY"
        />

</android.support.v4.widget.NestedScrollView>

對佈局檔案中控制元件解析:
1 CoordinatorLayout 作為根佈局

2 layout_scrollFlags 設定展開時的最大高度

3 CollapsingToolbarLayout 的主要屬性:
app:layout_scrollFlags=”scroll|exitUntilCollapsed”
設定為摺疊效果
app:layout_scrollFlags=”scroll|enterAlways”
設定為隱藏效果
app:collapsedTitleGravity=”left”
表示當頭部的襯圖ImageView消失後,此title將回歸到Toolbar的位置,預設是left。
app:expandedTitleGravity=”left|bottom”
表示將此CollapsingToolbarLayout完全展開後,title所處的位置,預設是left+ bottom
app:collapsedTitleTextAppearance=”@style/TextAppearance.CollapsedTitle”
指定摺疊狀態標題文字的樣式(自己在style中設定)
app:expandedTitleTextAppearance=”@style/TextAppearance.ExpandedTitle”
指定展開狀態標題文字的樣式(自己在style中設定)

4 Toolbar 主要屬性
app:layout_collapseMode=”pin”(子佈局設定摺疊模式)
有兩種“pin”:固定模式,在摺疊的時候最後固定在頂端;

5 NestedScrollView 滑動控制元件
相當於RecyclerView或ScrollView(ScrollView和上面控制元件不配套,不 能實現摺疊效果)
必須新增app:layout_behavior=”@string/appbar_scrolling_view_behavior這個屬性
當然在AppBarLayout 中的子view需要設定app:layout_scrollFlags這個屬性

相關推薦

AndroidCoordinatorLayout實現Toolbar隱藏摺疊

CoordinatorLayout是Android Design Support Library中提供的控制元件 效果圖: 程式碼: ScrollingActivity中 package com.jremm.rolechina.coo; imp

android簡單功能之——sharedPreferences實現記住使用者名稱密碼

1.關於sharedPreferences:    SharedPreferences是Android系統中提供的一種使用鍵值對形式儲存資料的方式,特點是使用簡單方便,缺點是由於功能簡單,儲存的資料形式有限,只能用作簡單的資料儲存。由於SharedPreferences是一個

JS實現變換背景字體顏色

gree size out dex ext () func htm round <!DOCTYPE html> <html> <head> <script type="text/javascript" src="http://ap

AndroidRecyclerView實現的二維Excel效果組件

eight main AS UC alt 包括 data github AD excelPanel 二維RecyclerView。不僅可以加載歷史數據,而且可以加載未來的數據。 包括在您的項目中 excelPanel 二維RecyclerView。不僅可以加載

Android Fragment+Viewpager實現左右滑動點選 實現DrawerLayout

xml佈局程式碼: <android.support.v4.widget.DrawerLayout xmlns:android=“http://schemas.android.com/apk/res/android” xmlns:app=“http://schemas.androi

《商城專案02》--Nginx實現反向代理負載均衡

一, Nginx的安裝 1, 下載解壓安裝 (這裡提供一個1.8.0的windows版本:  連結:https://pan.baidu.com/s/1Cf0sbrlUuc15OKDQ36J9mQ  提取碼:y5z5) 2, 啟動測試 雙擊nginx.ex

Flutter實現一個塗鴉加水印功能

本文涉及的知識點:截圖、圖片儲存、根據使用者手勢實時繪製canvas。 GitHub地址:github.com/yumi0629/Fl… 先上效果圖: 需求分析   這次的想法是移植自專案中的一個小功能:截屏當前頁面,添加塗鴉功能後,分享給第三方APP。分享功能我們

java實現簡易加密解密

實現原理:               通過位運算的異或運算子“^”把字串與一個指定的值進行異或運算,從而改變字串中的每個字元的值,這樣就可以得到一個加密後的字串。傳送後再將加密後的字串通過源程式實現解

java實現氣泡排序選擇排序

氣泡排序:依次比較兩個相鄰的元素,將值大的元素交換至右端,一輪比較過後,最大的元素在最右端。 public class BubbleSort { public static void main(String[] args) { int[] arr

android Radio實現的底部導航

package test.com.bottomnavigationradio; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v7.

Xamarin.Android-ZXing實現二維碼掃描以及連續掃描

一、前言 本文的內容有兩個基礎:ZXing.Net和ZXing.Net.Mobile ZXing.Net:ZXing的C#實現,主要封裝了各種二維碼的編碼、解碼等跨平臺的演算法 ZXing.Net.Mobile:對ZXing.Net在xamarin的應用進行了封裝,主要實現了攝像頭掃描、掃描view、掃

Android工具之實現截圖禁止截圖

轉載地址:http://blog.csdn.net/xietansheng/article/details/52689384; 1. 應用內的程式碼截圖(獲取View的快照) Android的View類中提供了獲取控制元件繪製快取的方法,這種截圖的方式僅限於應用內

androidSharedPreferences實現登入時記住密碼功能

import android.content.Intent;import android.content.SharedPreferences;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import andr

資料結構筆記之C++實現順序棧鏈式棧

這裡介紹兩種實現棧的方式:“順序棧”和“鏈式棧”,各有各的優缺點。 不管是“順序棧”還是“鏈式棧”,我們可以先定義一個棧的ADT(抽象資料型別),如下面的“stack.h” #ifndef STACK_H #define STACK_H const int

一個eXosip實現的UACUAS的例子(除錯成功)

    經過一段時間的學習,對sip總算有了一點認識,在學習過程中,遇到了太多的問題,鬱悶過,惆悵過,但是一咬牙,還是過來了。令我感動的是,在網上遇到一些很熱心的朋友,不厭其煩地給我以解惑,感謝他們,尤其是友善的大狗,呵呵,希望將來有一天他能看到這篇文章。     我是利用e

Android 頁面頂部狀態列隱藏透明

隱藏 方法1 //隱藏標題欄 requestWindowFeature(Window.FEATURE_NO_TITLE); //隱藏狀態列

AndroidMediaRecorder實現MPEG4視訊監控

花了整整一個星期,終於把技術難點給突破了,貌似網上對這個討論的較少。 主要需要實現的功能是在Android手機上實時採集視訊,並在遠端比如PC機上實時顯示出來,也就是以android手機作為監控攝像頭。 一開始查到的是smartcam的一個開源專案,看了下原始碼,發現其實現原理是利用Android 的cam

Android 使用CoordinatorLayout實現滾動標題欄效果

在Material Design裡,CoordinatorLayout通常用來作為頂層檢視,來協調處理各個子View之間的動作,從而實現各種動畫效果,如Snackbar與FloatingActionButton的配合顯示效果,就是以CoordinatorLayo

android SharedPreferences實現app首次使用顯示引導介面,之後使用將不再出現

功能如標題所示,話不多說,程式碼簡單,註釋清晰,一目瞭然: package com.kk.main;import android.content.Intent;import android.content.SharedPreferences;import android.

安卓Android本地Sqlite實現註冊賬號登入功能

實現了註冊賬號時將資料寫入本地SQLite,登入賬號時從本地SQLite匹配資料,並有記住密碼功能,以及通過改密口令(類似於密保問題)修改密碼的功能 思路很簡單,登入賬號的時候,先去資料庫匹配賬號,如果匹配到了相同賬號,再去匹配同一行的密碼,匹配成功則登入成功,匹配不成功則