1. 程式人生 > >關於CoordinatorLayout展開與摺疊相關屬性

關於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);
}

然後這樣使用它:
 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 {
                
                    //中間狀態
                
                }
            }
        });
2、常用屬性

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=

"scroll|enterAlways" (CoordinatorLayout屬性,子佈局通過設定該屬性定是否可滑動

說明:

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指定摺疊狀態的標題如何放置,可選值:topbottom

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