Подтвердить что ты не робот

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

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

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

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

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

Layout Editor

4b9b3361

Ответ 1

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

Ответ 2

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

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

app:layout_constraintLeft_toRightOf="@+id/editText"

Ответ 3

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

enter image description here

Ответ 4

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

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

Таким образом, ответ решается в коде XML.

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

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

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

app:layout_constraintRight_toLeftOf="@id/right_element"

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

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

app:layout_constraintLeft_toRightOf="@+id/left_element"

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

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

Ответ 5

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

Ответ 6

Я думаю, что редактор 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_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 улучшит это.

Ответ 7

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

Ответ 8

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

Ответ 9

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

В терминах вопроса лучшее дает Джеймс @6/6/17.

  • Добавить три кнопки в представление
  • Выберите их все и щелкните правой кнопкой мыши
  • Выберите "Центр по горизонтали"

Это делает трюк для создания цепочки

Ответ 10

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

Я выбрал оба виджета, затем выбрал Center Horizontally. Цепочка была создана, я отключил Autoconnect, затем продолжил учебник.

Ответ 11

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

Ответ 12

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

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

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

Ответ 13

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

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

Ответ 14

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

Android Studio 3.2.2

enter image description here