Невозможно сформировать цепочку между двумя представлениями/виджетами в Android Studio

Когда я использую редактор макетов в Android Studio и пытаюсь создать цепочку (двунаправленное ограничение) между EditText View и Button Просмотр с использованием якорей ограничений не создает цепочку.

Это создает ограничение только в том случае, если я пытаюсь ограничить одно View другим.

Я пытаюсь связать правую часть EditText с левой стороной Button.

Вот как выглядит мой редактор макетов:

Редактор макетов


comment
учебник по андроиду ужасен. они пропускают так много шагов, кнопки находятся не там, где они должны быть, последовательности не работают так, как они говорят, что должны... ОЧЕНЬ расстраивает. Кто-то должен сделать учебник о том, как взять учебник. Если кто найдет лучшую альтернативу, пишите.   -  person segFaultCoder    schedule 20.05.2017
comment
Та же проблема здесь ... в настоящее время кажется, что вам нужно использовать параметр по центру по горизонтали после выбора обоих представлений. Может это версия?   -  person Adel Khial    schedule 27.06.2017


Ответы (16)


Я тоже пытался это выяснить. Я обнаружил, что один из способов сделать это — выбрать оба представления, затем щелкнуть правой кнопкой мыши и выбрать «Центрировать по горизонтали». Это создает цепочку, но затем вы должны соответствующим образом настроить любые другие ограничения. Я новичок в Android, поэтому я уверен, что будут и другие способы....

person Swud    schedule 13.03.2017

Я была такая же проблема. Решил это, войдя в XML, как указано в руководстве: https://developer.android.com/training/basics/firstapp/building-ui.html

В учебнике нажмите «Просмотреть окончательный макет XML» и сравните. Мой XML отсутствовал:

app:layout_constraintLeft_toRightOf="@+id/editText"
person Gustav Eriksson    schedule 19.03.2017

В Android Studio 3.0.1 выберите два объекта (на вкладке дизайна xml) и щелкните правой кнопкой мыши один из них, и в разделе «цепочка» у вас будет два варианта: один для горизонтальной цепочки, а второй для вертикальной цепочки.

введите описание изображения здесь

person Ori Elkobi    schedule 23.03.2018

У меня есть решение, вероятно, не будет лучшим, пока кто-то действительно не ответит правильно, но работает. Я надеюсь, что это поможет другим ребятам, которые застряли в том же месте, что и я, чтобы вы могли продолжить работу.

Похоже, что интерфейс студии Android не работает должным образом, когда нужно создавать цепочки. Некоторые варианты от людей здесь работают для 2 или 3 элементов, но у меня 5 элементов.

Поэтому ответ заключается в том, чтобы решить это в коде XML.

Мои шаги предназначены для горизонтального расположения, если вы хотите вертикального, просто измените правое/левое на верхнее/нижнее.

Я помещаю все элементы в то место, которое мне нужно, и удаляю все соединения. (Затем в моем случае я соединяю верх и низ так, чтобы они оказались посередине.)

Затем я соединяю первый элемент слева и последний элемент справа. И соедините правую часть каждого элемента с левой стороной следующего элемента.

app:layout_constraintRight_toLeftOf="@id/right_element"

Изображение нормального соединения элементов, цепочки пока нет

После этого я захожу внутрь кода и вручную ставлю соединение с левым элементом.

app:layout_constraintLeft_toRightOf="@+id/left_element"

И цепочка была создана. Изображение элементов, соединенных цепочкой

Я надеюсь, что это поможет, извините, что не публикую фотографии, у меня еще недостаточно репутации XD.

person Canato    schedule 16.10.2017

я думаю, что редактор пользовательского интерфейса Android Studio нуждается в большем улучшении для создания цепочки, в настоящее время я использую Android Studio Preview 3.0 Canary 3

Иногда из редактора это работает отлично, но иногда нет, когда ссылка не происходит из редактора пользовательского интерфейса, нам нужно добавить ограничение вручную в соответствии с требованием. Вертикальная или горизонтальная цепочка - это ограничения.

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_constraintHorizontal_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 улучшит это

person Pavan    schedule 05.06.2017

Решено путем добавления ограничений как в текст редактирования (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" />
person Anurag    schedule 22.05.2017

Способ, которым я смог создать вид цепочки в макете чертежа, - это перетащить щелчок, выбрать объекты, которые нужно связать. Затем, когда они выбраны, щелкните правой кнопкой мыши и выберите «центрировать по горизонтали». После этого я могу создать другое ограничение и цепочку.

person james    schedule 06.06.2017

Я понял, что в Android Studio 3.2.2 вам нужно щелкнуть представления в дереве компонентов, поэтому щелкните левой кнопкой мыши первый компонент, а затем, удерживая Shift, щелкните второй компонент, а затем щелкните правой кнопкой мыши, и в меню вы увидите цепочки, как в моем скриншот ниже.

Android-студия 3.2.2

введите здесь описание изображения

person Andrew Wetherill    schedule 15.04.2019

В частности, это можно решить, удерживая кнопку Shift и нажимая оба виджета. После этого процесса вы можете щелкнуть правой кнопкой мыши один из виджетов, чтобы иметь возможность связать представления. Используйте это для представления EditText, а также, в частности, для кнопки.

person user16336788    schedule 28.06.2021

Я решил это, создав цепочку в режиме чертежа. В учебнике никогда не говорится, что вы должны вернуться к нему, но если вы это сделаете, вы можете создать цепочку.

person qacwnfq q    schedule 11.05.2017
comment
Как ты сделал это? Я в режиме чертежа, но якоря не соединяются (не отображаются зеленым) - person mukulg; 05.06.2017

Простой совет при следовании руководству — убедитесь, что Android Studio обновлена. Мне было интересно, где находятся определенные кнопки, когда я следую инструкциям, но обнаружил, что использую более старую версию.

Что касается вопроса, лучший ответ дал Джеймс @ 06.06.17.

  1. Добавьте три кнопки в представление
  2. Выделите их все и щелкните правой кнопкой мыши
  3. Выберите «Центрировать по горизонтали»

Это помогает создать цепочку

person Charith    schedule 22.06.2017

Я не послушался руководства, включив автоподключение (потому что пробовал все).

Я выбрал оба виджета, затем выбрал «Центрировать по горизонтали». Цепочка была создана, я снова отключил автоподключение и продолжил обучение.

person 4dc0    schedule 07.07.2017

Вкладка ДИЗАЙН очень подвержена ошибкам! Просто делайте то, что вы хотите сделать в дизайне, но пишите через XML. Нет необходимости в учебниках, это говорит само за себя, подключите все левые и правые!

person RJFares    schedule 22.10.2017

У меня была такая же проблема раньше, и, насколько я могу судить, у нас та же проблема.

В руководстве предполагается, что вы будете использовать версию Android Studio 3. Когда у меня возникла эта проблема, я понял, что моя студия Android все еще 2.2.3. После установки обновления для версии 3 и sdk и т. д. до последней версии все заработало.

Надеюсь это поможет.

person ikiSiTamvaaan    schedule 03.11.2017

что вызвало проблему для меня - я продублировал одно из своих представлений в своем макете (чтобы ускорить процесс - или я так думал). сделав это - я вызвал проблему - несколько представлений имели одинаковое значение android:id. что является большим нет-нет.

уникальное значение для всех моих представлений (путем изменения android:id ) помогло решить эту проблему

person Dror    schedule 28.06.2018

У меня тоже была такая же проблема, и мне помогло выбрать оба представления, удерживая кнопку CMD вместо кнопки SHIFT.

В качестве справки я использую версию Android Studio для macOS и выбирал оба представления с помощью кнопки SHIFT, в результате чего цепочки были недоступны.

Я надеюсь, что это поможет кому-то!

person Danny    schedule 18.06.2020