gpt4 book ai didi

android - ConstraintLayout vs Coordinator 布局?

转载 作者:IT王子 更新时间:2023-10-28 23:49:47 30 4
gpt4 key购买 nike

实现内容:ConstraintLayoutCoordinatorLayout在android中进行适当的 Material 设计?

最佳答案

CoordinatorLayout 是一个 super 强大的 FrameLayout。

CoordinatorLayout


CoordinatorLayout适用于两个主要用例:
  • 作为顶级应用程序装饰或 Chrome 布局
  • 作为与一个或多个 subview 进行特定交互的容器

  • 默认情况下,如果您将多个子项添加到 FrameLayout ,它们会相互重叠。一个 FrameLayout最常用于保存单个 subview 。 CoordinatorLayout的主要诉求是它协调其中的 View 的动画和转换的能力。通过指定 Behaviors对于 CoordinatorLayout 的 subview 您可以在单个父级中提供许多不同的交互,并且这些 View 也可以相互交互。 View 类在用作 CoordinatorLayout 的子项时可以指定默认行为使用 CoordinatorLayout.DefaultBehavior注解。

    行为可用于实现各种交互和额外的布局修改,范围从滑动抽屉和面板到滑动可关闭元素和按钮,这些元素在移动和动画时会粘在其他元素上。

    ConstraintLayout 是一个类似于RelativeLayout 的 super 强大的ViewGroup,但比RelativeLayout 更灵活。

    ConstraintLayout


    ConstraintLayout允许您创建具有平面 View 层次结构(无嵌套 View 组)的大型复杂布局。 它类似于RelativeLayout 因为所有 View 都是根据兄弟 View 和父布局之间的关系来布局的,但它比 RelativeLayout 更灵活。并且更容易与 Android Studio 的布局编辑器一起使用。
  • ConstraintLayout可以在任何地方使用,您不需要任何其他 ViewGroup,例如 RelativeLayout , LinearLayoutFrameLayout一旦您开始使用 ConstraintLayout .

  • 目前有多种类型的约束可供您使用:
  • 相对定位
  • 边距
  • 定心定位
  • 圆形定位
  • 可见性行为
  • 尺寸约束
  • 链条
  • 虚拟助手对象
  • 优化器

  • 实现内容: ConstraintLayoutCoordinatorLayout在android中进行适当的 Material 设计?

    您可能需要同时使用 ConstraintLayoutCoordinatorLayout构建高效的 UI 和 Material 动画。

    一个使用 CoordinatorLayout 的常见示例和 ConstraintLayout下面给出供您引用。
  • 使用 Coordinatorlayout作为顶级应用程序装饰。它通常用于布局 AppBarLayout , FloatingActionButton ,以及屏幕主体,例如 NestedScrollView .内NestedScrollView使用 ConstraintLayout将布局的其余部分描述为平面层次结构。
    <androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.core.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">

    <!-- Your scrolling content -->
    <androidx.constraintlayout.widget.ConstraintLayout
    ...>

    <!-- body of constraint layout -->

    <Button android:id="@+id/button" ...
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent/>


    </androidx.constraintlayout.widget.ConstraintLayout>
    </androidx.core.widget.NestedScrollView>

    <com.google.android.material.appbar.AppBarLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent">
    <androidx.appcompat.widget.Toolbar
    ...
    app:layout_scrollFlags="scroll|enterAlways"/>
    <com.google.android.material.tabs.TabLayout
    ...
    app:layout_scrollFlags="scroll|enterAlways"/>
    </com.google.android.material.appbar.AppBarLayout>
    </androidx.coordinatorlayout.widget.CoordinatorLayout>

  • 上面的 fragment 是做什么的?干得好。
  • 我们已经放置了 androidx.coordinatorlayout.widget.CoordinatorLayout作为根布局。我们把androidx.core.widget.NestedScrollViewcom.google.android.material.appbar.AppBarLayout作为直系 child 。
  • 我们定义了 app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" androidx.core.widget.NestedScrollView 的属性.这是关键点。我们为 NestedScrollView 定义了一个行为.那就是我们告诉协调器布局 NestedScrollView取决于 AppBarLayout .
  • 当然,Behaviors 不会自己做任何事情,但 CoordinatorLayout 会。它会相应地采取行动并帮助拦截触摸事件、窗口插入、测量、布局和嵌套滚动。所以在这里,它按照我们的指示将 NestedScrollView 放在 AppBarLayout 下方。酷吧?
  • 我们放置了 ConstraintLayoutNestedScrollView使其可滚动。正如我们已经讨论过的,ConstraintLayout 用于将 subview 与 ConstraintLayout 的边界对齐。

  • 我可以在另一个 ConstraintLayout 中添加 ConstraintLayout 吗?

    当然是的,您可以根据您的设计要求使用任何组合来对齐 View 。

    我可以在另一个 CoordinatorLayout 中添加 CoordinatorLayout 吗?

    这不是通常的做法。 CoordinatorLayout 最常见的用例是作为顶级应用程序装饰,以在其他直接子项之间进行协调。但是是的,如果你真的想嵌套 CoordinatorLayout,你可以通过创建一个自定义的 CoordinatorLayout 来实现,它扩展了 CoordinatorLayout和实现 NestedScrollingChild将滚动事件传递给父 CoordinatorLayout。

    积分

    您可以使用强大的 MotionLayout这是 ConstraintLayout 的子类用于构建动画。
    You may check this for a detailed example用于自定义动画使用 MotionLayout .

    关于android - ConstraintLayout vs Coordinator 布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40929686/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com