it-swarm.com.ru

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

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

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

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

Вот как выглядит мой Layout Editor:

Layout Editor

41
C.Kraz

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

17
Swud

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

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

app:layout_constraintLeft_toRightOf="@+id/editText"
12
Gustav Eriksson

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

 enter image description here

5
Ori Elkobi

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

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

Таким образом, ответ решить эту проблему в коде XML.

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

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

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

app:layout_constraintRight_toLeftOf="@id/right_element"

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

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

app:layout_constraintLeft_toRightOf="@+id/left_element"

И chain была создана . Изображение элементов, связанных с цепью

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

3
Canato

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

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

1
james

я думаю, что Android Studio UI редактор нуждается в большем улучшении для создания цепочки в настоящее время я использую 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_constraintHor Horizontal_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 студии улучшит это

1
Pavan

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

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

0
4dc0

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

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

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

0
ikiSiTamvaaan

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

С точки зрения вопроса, лучшее дано Джеймсом 6/6/17.

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

Это делает трюк, чтобы создать цепочку

0
Charith

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

0
RJFares

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

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

0
Dror

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

0
qacwnfq q