如何使用新的 Android 约束布局来减少视图层次

How to use the new Android Constraint Layout to reduce View hierarchy

您是否知道如何使用最近在今年 Google I/O 上宣布的新约束布局?

您可以转到现有布局资源文件,打开可视化编辑器并右键单击 RelativeLayout(例如)并单击选项以转换为约束布局。

您还必须在 build.gradle 文件中添加 Gradle 依赖项:

compile 'com.android.support.constraint:constraint-layout:1.0.0'

来自 Docs

如果您要更新现有项目,请按以下步骤操作:

确保您拥有最新的 Android 支持存储库(版本 32 或更高版本):// 这是我缺少的部分

单击工具 > Android > SDK 管理器。 单击 SDK 工具选项卡。 Select Android 支持存储库,然后单击确定。

在您的 build.gradle 文件中添加更新的约束布局库作为依赖项

dependencies {
  compile 'com.android.support.constraint:constraint-layout:1.0.0'
}

在工具栏或同步通知中,单击“将项目与 Gradle 个文件同步”。

要为您的项目添加新的约束布局:

  • 右键单击模块的布局目录,然后单击新建 > XML > 布局 XML。 输入布局的名称并输入 "android.support.constraint.ConstraintLayout" 作为根标签。 单击“完成”。

要将现有布局转换为约束布局:

  • 在 Android Studio 和 select 编辑器底部的“设计”选项卡中打开现有布局 window。 在组件树 window 中,右键单击布局并单击转换为 ConstraintLayout。

通过 Google CodeLabs 中的 link。您将对 约束布局 以及如何使用不同的约束(如 Manual ConstraintAuto ConnectInference 有基本的了解。

还有 UI BuilderInspector 这将帮助我们更快地构建 UI。

我试了很多版本,都无法解决问题!最后我让 Android Studio 来解决这个问题。

在XML文件中,在错误信息旁边可以看到这个选项!单击它以导入推荐版本

或者您可以按 alt+enter 将光标置于错误行

当我按下 alt+enter

时,我得到了 constraint-layout:1.0.0-alpha8

compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8'

1) 要使用 ConstraintLayout 设计新布局,请将依赖项包含在 app.gradle 文件中

compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8'

注意:对于布局中的每个视图,您必须包含以下属性,否则视图将显示在 (0,0)。

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    ....>

        <View
           android:id="@+id/top_view"
           .../>

        <View
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/top_view"
        app:layout_constraintBottom_toTopOf="@+id/bottom_view"
        ..../>

       <View
           android:id="@+id/bottom_view"
           .../>

</android.support.constraint.ConstraintLayout>

2) 将现有布局文件转换为约束布局:

在 Android Studio 和 select 编辑器底部的“设计”选项卡中打开现有布局 window。在组件树 window 中,右键单击根布局并单击转换为 ConstraintLayout。然后包括上定义的属性。

更改文件中的依赖项build.gradle

改用编译com.android.support.constraint:constraint-layout:1.0.0-beta1

添加依赖项

compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha9'

并创建新布局 xml 文件 --> 转到设计选项卡 --> 右键单击​​你的根布局并select 最后一个选项 将 LinearLayout 转换为 ConstraintLayout

查看截图

Google 发布正式版1.0 ConstraintLayout

现在导入非测试版

compile 'com.android.support.constraint:constraint-layout:1.0.0'

查看此处信息 http://tools.android.com/recent/constraintlayout10isnowavailable

您应该在模块级别 gradle 文件中添加 google maven 存储库(重要部分

repositories {
    maven {
        url 'https://maven.google.com'
    }
}

然后在 dependencies 中添加这一行:

compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.android.support.constraint:constraint-layout-solver:1.0.2'

Understanding the performance benefits of ConstraintLayout 描述了传统布局层次结构的开销。它给出了一个使用嵌套布局构建的布局示例

并声称

ConstraintLayout performs about 40% better in the measure/layout phase than RelativeLayout

这篇Codelab project展示了如何使用 ConstaintLayout 来减少 View 层级并展平上述布局。