ConstraintLayout与协调员布局?

Swa*_*nil 49 android material-design coordinator-layout android-constraintlayout

要实现什么:ConstraintLayout或者CoordinatorLayout在android中进行适当的材料设计?

Dmi*_*kov 63

CoordinatorLayout旨在成为管理行为的活动的顶级布局,例如交互和动画.

ConstraintLayout的主要目标是提供一种方便的方法来创建具有多个子节点的平面布局(更强大的RelativeLayout).

因此,CoordinatorLayout用于管理活动组件的复杂行为(尤其是动画),以及ConstraintLayout用于组件正确放置(尤其是列表项).


Dar*_*ish 41

CoordinatorLayout

CoordinatorLayout是一个超级动力的FrameLayout.

默认情况下,如果向FrameLayout添加多个子项,它们将相互重叠.最常使用FrameLayout来保存单个子视图.CoordinatorLayout的主要吸引力在于它能够协调其中的视图的动画和过渡.

ConstraintLayout

ConstraintLayout允许您使用平面视图层次结构创建大型复杂布局(无嵌套视图组).它与RelativeLayout类似,因为所有视图都根据兄弟视图和父布局之间的关系进行布局,但它比RelativeLayout更灵活,更易于使用Android Studio的布局编辑器.

什么实现ConstraintLayout或CoordinatorLayout在android中正确的材料设计?

您可能需要使用ConstraintLayout和CoordinatorLayout来构建高效的UI和材质动画.


ser*_*inc 13

看起来你(几乎)总是使用a CoordinatorLayout,有时候使用ConstraintLayout内部.请参阅以下资源

  • 在代码实验室https://codelabs.developers.google.com/codelabs/material-design-style/index.html#3仅使用CoordinatorLayout

  • 示例android-sunflower应用程序("说明Android开发最佳实践")既不用于顶级活动,也在其内部使用两者fragment_plant_detail.xml,其中ConstraintLayout包含CoordinatorLayout:

    <layout ...>
    <data .../>
    <android.support.design.widget.CoordinatorLayout ...>
        <android.support.design.widget.AppBarLayout ...>
            <android.support.design.widget.CollapsingToolbarLayout ...>
                <ImageView... />
                <android.support.v7.widget.Toolbar... />
            </android.support.design.widget.CollapsingToolbarLayout>
        </android.support.design.widget.AppBarLayout>
        <android.support.v4.widget.NestedScrollView ...>
            <android.support.constraint.ConstraintLayout ...>
                <TextView.../>
                <TextView... />
            </android.support.constraint.ConstraintLayout>
        </android.support.v4.widget.NestedScrollView>
        <android.support.design.widget.FloatingActionButton ... />
    </android.support.design.widget.CoordinatorLayout>
    </layout>
    
    Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的例子.<layout>用于数据绑定; <data> for viewmodel params; <CoordinatorLayout>用于协调和动画工具栏,FAB等; <ConstraintLayout>用于保存视图. (2认同)