gpt4 book ai didi

android - 在 ConstraintLayout 中对 View 进行分组以将它们视为单个 View

转载 作者:IT老高 更新时间:2023-10-28 21:55:44 26 4
gpt4 key购买 nike

我需要对 ConstraintLayout 中的一组 View 应用一些约束。 .我想将这些 View 分组并继续编辑,而 Android Studio 中的布局设计器将它们视为单个 View 。有没有办法在不使用 ViewGroup (另一种布局)实际包装 View 的情况下做到这一点?如果需要这样的包装器,也许 ConstraintLayout 附带了一个包装器布局,它允许对对象进行分组,而无需创建像 RelativeLayout 这样的繁重布局?

最佳答案

约束布局链

Android 开发者最近发布了 ConstraintLayout 的新版本(截至今天的1.0.2)。此版本包含一个新的主要功能 - Chains ,这使我们可以对 ConstraintLayout 中的 View 进行分组.

Chains provide group-like behavior in a single axis (horizontally or vertically).

A set of widgets are considered a chain if they a linked together via a bi-directional connection

Once a chain is created, there are two possibilities:

  • Spread the elements in the available space
  • A chain can also be "packed", in that case the elements are grouped together

目前,您需要使用以下 gradle 依赖来使用此功能(因为它是 alpha):

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

Here您可能会发现最新版本的 ConstraintLayout 可在您的项目中使用。

直到 Android Studio 2.3 ,Android Studio 用户界面设计器不支持创建链,因为您无法在其中添加双向约束。正如 TranslucentCloud 所提到的,解决方案是在手动 XML 中创建这些约束。 .从 Android Studio 2.3(目前仅在金丝雀 channel 上)开始,UI 编辑器也支持链(正如评论中提到的 GoRoS)。


示例

以下是如何使用 ConstraintLayoutchains 将两个 View 一起放置在屏幕中间的示例:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
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">


<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="TextView"
app:layout_constraintBottom_toTopOf="@+id/button"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5"
app:layout_constraintVertical_chainPacked="true"/>

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"/>
</android.support.constraint.ConstraintLayout>

@Mateus Gondim 更新(2018 年 1 月)

在最近的版本中,您应该使用 app:layout_constraintVertical_chainStyle="packed" 而不是 app:layout_constraintVertical_chainPacked="true"


关于android - 在 ConstraintLayout 中对 View 进行分组以将它们视为单个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37507463/

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