📅  最后修改于: 2023-12-03 15:22:48.738000             🧑  作者: Mango
协调器布局(CoordinatorLayout)是一个可以响应手势操作、协调底部面板和其他视图之间交互的布局。它的核心概念是行为(Behavior),通过设置不同的行为组合,可以实现丰富的布局效果。
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/app_bar_image"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@drawable/header"
android:fitsSystemWindows="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:layout_behavior="com.example.MyFabBehavior" />
</android.support.design.widget.CoordinatorLayout>
在上面的布局文件中,ImageView和RecyclerView都设置了app:layout_behavior="@string/appbar_scrolling_view_behavior",表示它们会响应AppBarLayout的滚动状态。FloatingActionButton设置了自定义的行为MyFabBehavior,实现对应的悬浮效果。
public class MyFabBehavior extends CoordinatorLayout.Behavior<FloatingActionButton> {
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency) {
return dependency instanceof Snackbar.SnackbarLayout;
}
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency) {
float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight());
child.setTranslationY(translationY);
return true;
}
}
在上面的代码中,MyFabBehavior继承自CoordinatorLayout.Behavior
协调器布局是一个强大的布局方式,可以实现丰富的布局效果,但需要掌握一些基本的概念和操作。掌握协调器布局,可以让我们的Android应用更加丰富和易于操作。