關於CoordinatorLayout展開與摺疊相關屬性
1、如何監聽CollapsingToolbarLayout的展開與摺疊
使用官方提供的 AppBarLayout.OnOffsetChangedListener就能實現了,不過要封裝一下才好用。
自定義一個繼承了 AppBarLayout.OnOffsetChangedListener的類,這裡命名為AppBarStateChangeListener:
public abstract class AppBarStateChangeListener implements AppBarLayout.OnOffsetChangedListener { public enum State { EXPANDED, COLLAPSED, IDLE } private State mCurrentState = State.IDLE; @Override public final void onOffsetChanged(AppBarLayout appBarLayout, int i) { if (i == 0) { if (mCurrentState != State.EXPANDED) { onStateChanged(appBarLayout, State.EXPANDED); } mCurrentState = State.EXPANDED; } else if (Math.abs(i) >= appBarLayout.getTotalScrollRange()) { if (mCurrentState != State.COLLAPSED) { onStateChanged(appBarLayout, State.COLLAPSED); } mCurrentState = State.COLLAPSED; } else { if (mCurrentState != State.IDLE) { onStateChanged(appBarLayout, State.IDLE); } mCurrentState = State.IDLE; } } public abstract void onStateChanged(AppBarLayout appBarLayout, State state); }
然後這樣使用它:
2、常用屬性mAppBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { @Override public void onStateChanged(AppBarLayout appBarLayout, State state) { Log.d("STATE", state.name()); if( state == State.EXPANDED ) { //展開狀態 }else if(state == State.COLLAPSED){ //摺疊狀態 }else { //中間狀態 } } });
android:fitsSystemWindows="true"
是一個boolean值的內部屬性,讓view可以根據系統視窗(如status bar)來調整自己的佈局,如果值為true,就會調整view的paingding屬性來給system windows留出空間...
用於實現狀態列,即 沉浸式狀態列!
Toolbar
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags=
說明:
app:popupTheme,這個屬性就是用來自定義我們彈出的選單的樣式,在之前的Actionbar的溢位選單,我們是不能自定義他的樣式的,只能根據你的theme來選擇黑白兩種,不能自己定義,現在我們可以定義彈出選單的樣式。
CoordinatorLayout
app:layout_scrollFlags (子佈局設定是否可滑動)
android:layout_gravity屬性控制組件在佈局中的位置
app:layout_behavior="@string/appbar_scrolling_view_behavior"通知佈局中包含滑動元件!
子佈局通過app:layout_scrollFlags確定是否可滑動.給需要滑動的元件設定 app:layout_scrollFlags="scroll|enterAlways" 屬性。 設定的layout_scrollFlags有如下幾種選項: scroll: 所有想滾動出螢幕的view都需要設定這個flag- 沒有設定這個flag的view將被固定在螢幕頂部。
enterAlways:這個flag讓任意向下的滾動都會導致該view變為可見,啟用快速“返回模式”。 enterAlwaysCollapsed:當你的檢視已經設定minHeight屬性又使用此標誌時,你的檢視只能已最小高度進入,只有當滾動檢視到達頂部時才擴大到完整高度。 exitUntilCollapsed: 滾動退出螢幕,最後摺疊在頂端。
CollapsingToolbarLayout
app:collapsedTitleGravity指定摺疊狀態的標題如何放置,可選值:top、bottom等
app:collapsedTitleTextAppearance="@style/TextAppearance.CollapsedTitle"
指定摺疊狀態標題文字的樣貌app:expandedTitleTextAppearance="@style/TextAppearance.ExpandedTitle"
指定展開狀態標題文字的樣貌
app:contentScrim="?attr/colorPrimaryDark"
指定CollapsingToolbarLayout完全被滾出到螢幕外時的ColorDrawableapp:expandedTitleGravity展開狀態的標題如何放置
app:titleEnabled指定是否顯示標題文字
app:toolbarId指定與之關聯的ToolBar,如果未指定則預設使用第一個被發現的ToolBar子View
app:expandedTitleMarginStart="10dp"
app:expandedTitleMargin
app:expandedTitleMarginBottom
app:expandedTitleMarginEnd
展開狀態改變標題文字的位置,通過margin設定
app:layout_collapseParallaxMultiplier="0.7"
設定視差的係數,介於0.0-1.0之間。
app:layout_collapseMode="pin"(子佈局設定摺疊模式)有兩種“pin”:固定模式,在摺疊的時候最後固定在頂端;“parallax”:視差模式,在摺疊的時候會有個視差摺疊的效果。
CollapsingToolbarLayout主要是提供一個可摺疊的Toolbar容器,對容器中的不同View設定layout_collapseMode摺疊模式,來達到不同的摺疊效果。
Floating Action Button (FAB)
app:fabSize="normal" 是用來定義 FAB 的大小的,normal 的意思是在大多數情況下標準尺寸為 56dp 的按鈕,但是萬一你想使用較小的一個, mini 是另一個選擇,它的大小將變成 40dp。
app:elevation 為空閒狀態下的陰影深度,
app:pressedTranslationZ 為按下狀態的。
app:backgroundTint 是指定預設的背景顏色
app:rippleColor
是指定點選時的背景顏色
app:border Width border的寬度
app:fabSize 是指FloatingActionButton的大小,可選normal|mini
app:pressedTranslationZ 按下去時的z軸的便宜
TabLayout
app:tabIndicatorColor
tab的指示符顏色
app:tabSelectedTextColor
選擇tab的文字顏色
app:tabTextColor 普通tab字型顏色
app:tabMode 模式,可選fixed和scrollable fixed是指固定個數,scrollable是可以橫行滾動app:tabGravity 對齊方式,可選fill和center