一、容器屬性
CoordinatorLayout
是一個擴展自ViewGroup
的布局容器,它可以用來協調、控制子View之間的交互。 比如在滾動界面時,一些特定的子View可以在屏幕內滾動 同時一些別的View可以保持靜止。
在使用CoordinatorLayout
時,我們可以為它設置一些屬性來控制子View的行為:
layout_scrollFlags
: 這個屬性是讓子View跟隨滾動變化的主要屬性。我們可以指定該子View在滾動時的動作比如摺疊(SCROLL_FLAG_SCROLL
)、透明度變化(SCROLL_FLAG_EXIT_UNTIL_COLLAPSED
)和懸浮(SCROLL_FLAG_SNAP
)等。layout_anchor
:這個屬性指定View固定的地方(比如說一個ActionBar),讓其他的View可以圍繞它更好的布局layout_anchorGravity
:和前一個屬性類似,不過這個屬性指定的是layout_anchor
的位置。
<ImageView
app:layout_scrollFlags="scroll|enterAlways"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
二、協調多個子View的位置
使用CoordinatorLayout
我們還可以協調多個子View的位置,也就是實現一些動態變化的效果。
我們可以使用如下的屬性:
layout_collapseMode
:它可以指定子View的摺疊行為。layout_collapseParallaxMultiplier
:它可以設置透視摺疊的倍數。
<ImageView
android:layout_height="match_parent"
android:layout_width="match_parent"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.9" />
三、自定義Behaviors
在CoordinatorLayout
中還可以自定義Behavior
,讓不同的View有不同的交互效果。
創建自定義Behaviors的步驟:
- 創建一個自定義的類來擴展
CoordinatorLayout.Behavior
- 用
onDependentViewChanged
方法去定義View相互間的依賴行為 - 在XML中使用
app:layout_behavior
來指定這個Behavior
public class CustomBehavior extends CoordinatorLayout.Behavior<View> {
public CustomBehavior() {}
public CustomBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent,
View child, View dependency) {
return true;
}
}
四、Snackbar與CoordinatorLayout
在CoordinatorLayout
中使用Snackbar
的時候,可以使用到CoordinatorLayout.LayoutParams
提供的一些特殊滑動動作來產生一些更加優美的動畫效果。
Snackbar snackbar = Snackbar.make(view, "Snackbar text!",
Snackbar.LENGTH_SHORT);
View snackbarView = snackbar.getView();
CoordinatorLayout.LayoutParams params =
(CoordinatorLayout.LayoutParams) snackbarView.getLayoutParams();
params.setAnchorId(R.id.fab);
params.anchorGravity = Gravity.TOP;
params.gravity = Gravity.TOP;
snackbarView.setLayoutParams(params);
snackbar.show();
五、總結
通過使用CoordinatorLayout
,我們可以方便的協調不同View間的交互。這裡我們從容器屬性、多個子View的協調、自定義Behaviors以及Snackbar
等幾個方面詳細闡述了它的使用方法。希望這篇文章可以對大家理解和使用CoordinatorLayout
有所幫助。
原創文章,作者:YFGUB,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/325508.html