Android Studio如何在约束布局中尝试制作扩散链样式?

jgwigjjp  于 2023-05-12  发布在  Android
关注(0)|答案(2)|浏览(134)

我有3个图像视图如下在我的xml文件,并试图使他们链传播,但没有成功。我尝试选择布局,然后选择右键单击->链->水平链布局,但此选项被关闭。

<?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.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">

<ImageView
    android:id="@+id/ivSupprimer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintHorizontal_chainStyle="spread"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:srcCompat="@android:drawable/ic_delete" />

<ImageView
    android:id="@+id/ivEntreprises"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintHorizontal_chainStyle="spread"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toEndOf="@+id/ivSupprimer"
    app:layout_constraintTop_toTopOf="parent"
    app:srcCompat="@android:drawable/ic_delete" />

<ImageView
    android:id="@+id/ivEteindre"
    android:layout_width="wrap_content"
    app:layout_constraintHorizontal_chainStyle="spread"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toEndOf="@+id/ivEntreprises"
    app:layout_constraintTop_toTopOf="parent"
    app:srcCompat="@android:drawable/ic_delete" />
 </androidx.constraintlayout.widget.ConstraintLayout>

我正在跟进这个解决方案!

sg3maiej

sg3maiej1#

在ConstraintLayout Chain中,所有涉及的小部件必须双向链接在一起。
如果你有

| <- 1 -> <- 2 -> <- 3 ->|

水平地说(因为这个 * 例子 * 是一个水平链):

  • 1是链的 head(放置链类型的位置)。
  • 1的START固定到PARENT,END固定到2 的START。
  • 2被固定为1的START到END,以及3的END到START。
  • 3被固定为2的START到END,END到PARENT。

在XML中,链的第一个视图(它的头)* 没有固定 * 到它的第二个兄弟的开始:

<ImageView
    android:id="@+id/ivSupprimer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintHorizontal_chainStyle="spread"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:srcCompat="@android:drawable/ic_delete" />

您需要添加app:layout_constraintEnd_toStartOf="@id/ivEntreprises"
链中的其他(s)也是如此。总是把开始和结束钉在一起,就像一口井... * 链 *。
此外,你 * 不得 * 使用app:layout_constraintHorizontal_chainStyle="spread"(或任何链样式)的小部件是 * 不是链的头 *。每个链只需要一次。
规则:
1.一个小部件只能是每个方向上一个链的头部,这意味着它可以是垂直链和水平链的头部,但不能是多个水平链的头部(注意,我不知道你是如何做到这一点的,我也没有真正试图打破这个规则,但我假设它不会工作)。
1.链的声明只能在链的HEAD中预设。
1.在水平链中,HEAD是 * 最左边的 * 项,在垂直链中,HEAD是 * 最上面的 * 项。
1.链必须固定到开始/结束(水平链)和顶部/底部(垂直链)的边缘(父),并使每个部件彼此固定,形成虚拟的部件链。
this documentation或android官方约束布局链文档中找到更多关于链的信息。

btxsgosb

btxsgosb2#

选择3个项目,你想在链,然后右键单击。
链菜单将可用。选择“chains”->“Create Horizontal Chain”之后,选择链的任何成员将允许您访问链->“Horizontal Chain Style”菜单。
提示:在左侧的“组件树”中进行多选更容易。

相关问题