无法在Android Studio中的两个视图/小部件之间形成链

时间:2017-03-13 06:41:00

标签: android-layout android-studio android-constraintlayout constraint-layout-chains

当我在Android Studio中使用布局编辑器时,我尝试在 EditText 视图之间建立链(双向约束)按钮 查看使用约束锚,它不会产生链。

如果我尝试将一个 View 约束到另一个

,它只会产生约束。

我正在尝试将 EditText 的右侧链接到按钮的左侧。

这就是我的布局编辑器:

Layout Editor

16 个答案:

答案 0 :(得分:17)

我也试图解决这个问题。我发现一种方法是选择两个视图,然后右键单击并选择“水平居中”。这会创建链,但您必须相应地调整任何其他约束。我是Android新手,所以我相信会有其他方式......

答案 1 :(得分:12)

我有同样的问题。按照教程的指示进入XML解决了这个问题: https://developer.android.com/training/basics/firstapp/building-ui.html

在教程中,单击“查看最终布局XML”并进行比较。我的XML丢失了:

app:layout_constraintLeft_toRightOf="@+id/editText"

答案 2 :(得分:5)

在Android Studio 3.0.1中,选择两个对象(在xml设计选项卡上)并右键单击其中一个对象,您将拥有" chain"选项两个选项:一个是水平链,另一个是垂直链。

enter image description here

答案 3 :(得分:3)

我得到了一个解决方案,可能不会是最好的解决方案,直到有人真正正确回答,但有效。 我希望这可以帮助那些和我在同一个地方的人,所以你可以继续工作。

看起来android studio的界面在创建链时工作不正常。这里的人的一些选项适用于2或3个元素,但我有5个元素。

所以答案是在代码XML中解决这个问题。

我的步骤是水平排列,如果你想垂直只是改变右/左上/下

我将所有元素放在我想要的位置并删除所有连接。 (比我的情况我连接顶部和底部,所以它们可以在中间。

然后我连接左边的第一个元素和右边的最后一个元素。 并连接下一个元素左侧每个元素的右侧。

app:layout_constraintRight_toLeftOf="@id/right_element"

Image of elements connect normal, no chain yet

之后我进入代码并手动将连接放到左侧元素。

app:layout_constraintLeft_toRightOf="@+id/left_element"

已创建。 Image of elements connect with chain

我希望对此有所帮助,抱歉不发布图片,我还没有足够的声誉XD。

答案 4 :(得分:1)

通过在编辑文本(app:layout_constraintRight_toLeftOf =“@ + id / button”)和按钮(app:layout_constraintBaseline_toBaselineOf =“@ + id / editText”)中添加约束来解决问题

完整示例如下

<EditText
    android:id="@+id/editText"
    android:layout_width="245dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="16dp"
    android:layout_marginStart="16dp"
    android:ems="10"
    app:layout_constraintRight_toLeftOf="@+id/button"
    android:hint="@string/edit_message"
    android:inputType="textPersonName"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginTop="16dp"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_marginRight="16dp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintBaseline_toBaselineOf="@+id/editText"
    app:layout_constraintLeft_toRightOf="@+id/editText"
    android:layout_marginLeft="16dp" />

答案 5 :(得分:1)

我认为android studio ui编辑器需要更多改进来创建链目前我使用的是Android Studio Preview 3.0 Canary 3

有时从编辑器它可以完美地工作但有时它不是,当链接不是从ui编辑器发生时我们需要根据需要手动添加约束垂直或水平链跟随是约束

layout_constraintTop_toTopOf
layout_constraintTop_toBottomOf
layout_constraintBottom_toTopOf
layout_constraintBottom_toBottomOf
layout_constraintBaseline_toBaselineOf
layout_constraintStart_toEndOf
layout_constraintStart_toStartOf
layout_constraintEnd_toStartOf
layout_constraintEnd_toEndOf

我们也在XML中手动声明链样式,如下所示

layout_constraintHorizo​​ntal_chainStyle或layout_constraintVertical_chainStyle

CHAIN_SPREAD -- the elements will be spread out (default style)

加权链 -- in CHAIN_SPREAD mode, if some widgets are set to MATCH_CONSTRAINT, they will split the available space

CHAIN_SPREAD_INSIDE -- similar, but the endpoints of the chain will not be spread out

CHAIN_PACKED -- the elements of the chain will be packed together. The horizontal or vertical bias attribute of the child will then affect the positioning of the packed elements

希望android studio编辑器能够改进这个

答案 6 :(得分:1)

我能够在蓝图布局中创建链视图的方法是通过拖动单击,选择要链接的对象。然后在选中它们的同时右键单击并选择&#34;水平居中&#34;执行此操作后,我可以创建另一个约束和链

答案 7 :(得分:1)

这可以通过按住 shift 按钮并同时按下两个小部件来具体解决。在此过程之后,您可以右键单击其中一个小部件以链接视图。将此用于 EditText 视图以及特别是按钮。

答案 8 :(得分:0)

我通过在蓝图模式下创建链来解决这个问题。教程永远不会说你必须回到它,但如果你这样做,你可以创建链。

答案 9 :(得分:0)

遵循本教程时的一个提示是确保Android Studio是最新的。我想知道按照教程时某些按钮在哪里,但发现我使用的是旧版本。

就问题而言,最好的是James @ 6/6/17。

  1. 在视图中添加三个按钮
  2. 全部选中并右键单击
  3. 选择&#34;水平居中&#34;
  4. 这就是创建链

    的技巧

答案 10 :(得分:0)

我通过打开Autoconnect(因为我正在尝试所有事情)而不遵守教程。

我选择了两个小部件,然后选择了“水平居中”。链条创建后,我关闭了Autoconnect,然后继续教程。

答案 11 :(得分:0)

“设计”标签非常容易出错! 只是做你想在设计中做的事情,但是通过XML写它。不需要教程,它是不言自明的,连接所有左派和权利!

答案 12 :(得分:0)

之前我遇到过同样的问题,而且我可以告诉他们,我们遇到了同样的问题。

教程希望您使用android studio 3版本。当我遇到这个问题时,我意识到我的android工作室仍然是2.2.3。将版本3和sdk等的更新安装到最新版本后,它就可以了。

希望这有帮助。

答案 13 :(得分:0)

是什么导致了我的问题-  我在布局中复制了我的一种观点(以加快速度-或我认为如此)。 这样做-我引起了问题-几个视图具有相同的 android:id 值。 这是一个很大的禁忌。

我所有视图的唯一值(通过更改android:id )有助于解决此问题

答案 14 :(得分:0)

我计算出,在Android Studio 3.2.2中,您必须单击组件树中的视图,因此左键单击第一个组件,然后按住Shift键单击第二个组件,然后右键单击,然后在菜单中将看到链如下面的屏幕截图所示。

Android Studio 3.2.2

enter image description here

答案 15 :(得分:0)

我也遇到了同样的问题,对我有用的是在按住CMD按钮而不是SHIFT按钮的同时选择两个视图。

作为参考,我使用的是MacOS版本的Android Studio,并使用SHIFT按钮选择了两个视图,这导致Chains变灰。

我希望对您有所帮助!