使用 ConstraintLayout 构建自适应界面

来源:https://developer.android.google.cn/training/constraint-layout?hl=zh-cn#constraints-overview

ConstraintLayout 可让您使用扁平视图层次结构(无嵌套视图组)创建复杂的大型布局。它与 RelativeLayout 相似,其中所有的视图均根据同级视图与父布局之间的关系进行布局,但其灵活性要高于 RelativeLayout,并且更易于与 Android Studio 的布局编辑器配合使用。

ConstraintLayout 的所有功能均可直接通过布局编辑器的可视化工具来使用,因为布局 API 和布局编辑器是专为彼此构建的。 因此,您完全可以使用 ConstraintLayout 通过拖放的形式(而非修改 XML)来构建布局。

本文提供了使用 ConstraintLayout 在 Android Studio 3.0 或更高版本中构建布局的指南。如果您想了解关于布局编辑器的更多信息,请参阅 Android Studio 指南以使用布局编辑器构建界面。

要查看您能够使用 ConstraintLayout 创建的各种布局,请查看 GitHub 上的约束布局示例项目。

约束条件概览


要在 ConstraintLayout 中定义某个视图的位置,您必须为该视图添加至少一个水平约束条件和一个垂直约束条件。每个约束条件均表示与其他视图、父布局或隐形引导线之间连接或对齐方式。每个约束条件均定义了视图在竖轴或者横轴上的位置;因此每个视图在每个轴上都必须至少有一个约束条件,但通常情况下会需要更多约束条件。

当您将视图拖放到布局编辑器中时,即使没有任何约束条件,它也会停留在您放置的位置。不过,这只是为了便于修改;当您在设备上运行布局时,如果视图没有任何约束条件,则会在位置 [0,0](左上角)处进行绘制。

在图 1 中,布局在编辑器中看起来很完美,但视图 C 上却没有垂直约束条件。在设备上绘制此布局时,虽然视图 C 与视图 A 的左右边缘水平对齐,但由于没有垂直约束条件,它会显示在屏幕顶部。

图 1. 编辑器将视图 C 显示在视图 A 下方,但它并没有垂直约束条件

图 2. 视图 C 现垂直约束在视图 A 下方

尽管缺少约束条件不会导致出现编译错误,但布局编辑器会将缺少约束条件作为错误显示在工具栏中。要查看错误和其他警告,请点击 Show Warnings and Errors。 为帮助您避免出现缺少约束条件这一问题,布局编辑器会使用 Autoconnect 和 Infer Constraints 功能自动为您添加约束条件。

将 ConstraintLayout 添加到项目中

如需在项目中使用 ConstraintLayout,请按以下步骤操作:

确保您的 maven.google.com 代码库已在模块级 build.gradle 文件中声明:

repositories {
    google()
}

将该库作为依赖项添加到同一个 build.gradle 文件中,如以下示例所示。请注意,最新版本可能与示例中显示的不同:

dependencies {
implementation “androidx.constraintlayout:constraintlayout:2.2.0-alpha07”
// To use constraintlayout in compose
implementation “androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha07”
}
在工具栏或同步通知中,点击 Sync Project with Gradle Files。
现在,您可以使用 ConstraintLayout 构建布局。

转换布局

如需将现有布局转换为约束布局,请按以下步骤操作:

在 Android Studio 中打开您的布局,然后点击编辑器窗口底部的 Design 标签页。
在 Component Tree 窗口中,右键点击该布局,然后点击 Convert layout to ConstraintLayout。
创建新布局
如需开始新的约束布局文件,请按以下步骤操作:

在 Project 窗口中,点击模块文件夹,然后依次选择 File > New > XML > Layout XML。
输入该布局文件的名称,并对 Root Tag 输入“androidx.constraintlayout.widget.ConstraintLayout”。
点击 Finish。

图 3. 用于将布局转换为 ConstraintLayout 的菜单

添加或移除约束条件

视频 1. 视图的左侧被约束在父布局的左侧

如需添加约束条件,请执行以下操作:

  1. 将视图从 Palette 窗口拖到编辑器中。当您在 ConstraintLayout 中添加视图时,该视图会显示一个边界框,每个角都有用于调整大小的方形手柄,每条边上都有圆形的约束手柄。
  2. 点击视图将其选中。
  3. 执行以下任一操作:
    • 点击约束手柄并将其拖动到可用定位点。 此点可以是另一视图的边缘、布局的边缘或者引导线。请注意,当您拖动约束手柄时,布局编辑器会显示可行的连接定位点和蓝色叠加层。
    • 点击 Attributes 窗口的 Layout 部分中的 Create a connection 按钮 ,具体如图 4 所示。

图 4. 您可以通过 Attributes 窗口中的 Layout 部分创建连接。

创建约束条件后,编辑器会为其指定默认外边距来分隔两个视图。

创建约束条件时,请注意以下规则:

  • 每个视图都必须至少有两个约束条件:一个水平约束条件,一个垂直约束条件。
  • 您只能在共用同一平面的约束手柄与定位点之间创建约束条件。因此,视图的垂直平面(左侧和右侧)只能约束在另一个垂直平面上;而基准线则只能约束到其他基准线上。
  • 每个约束句柄只能用于一个约束条件,但您可以在同一定位点上创建多个约束条件(从不同的视图)。

您可以通过执行以下任一操作来删除约束条件:

  • 点击某个约束条件将其选中,然后按 Delete
  • 按住 Control(在 macOS 上为 Command),然后点击某个约束定位点。请注意,该约束条件变为红色即表示您可以点击将其删除,如图 5 所示。

图 5. 红色约束条件表示您可以点击将其删除。

  • 在 Attributes 窗口的 Layout 部分中,点击某个约束定位点,如图 6 所示。

图 6. 点击约束定位点将其删除。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇