Эта точка зрения не ограничена


95

Я получаю следующую ошибку и использую Android Studio 2.2 Preview 3. Я искал в Google, но не нашел никаких ресурсов.

Error: This view is not constrained, it only has design time positions, so it will jump to (0,0) unless you add constraints

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

<TextView
        android:layout_width="384dp"
        android:layout_height="207dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/calc_default_display"
        android:id="@+id/textView"
        android:background="#ffffff"
        android:layout_margin="0dp"
        android:gravity="bottom|end"
        android:textSize="70sp"
        android:nestedScrollingEnabled="false"
        android:maxLines="2"
        android:maxLength="17"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp" />

Ответы:


152

Чтобы быстро решить эту проблему, используйте этот очень полезный ярлык в Android Studio:

Щелкните правой кнопкой мыши рассматриваемый виджет> Макет ограничений> Вывести ограничения:

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

После этого вы можете настроить ограничения, как описано здесь: https://stackoverflow.com/a/37960888/5556250

Обновить

Это неверно для Android Studio v3 и выше. Согласно комментарию @ purpleladydragons :

«Макет ограничения» отсутствует в раскрывающемся меню. Используйте значок волшебной палочки в меню панели инструментов над предварительным просмотром дизайна; есть кнопка "Infer Constraints".


2
Большое спасибо за ваше решение, я абсолютный новичок, я понятия не имел, что не так с положением виджета
Атул

2
Отличное решение, хотя я бы хотел, чтобы Android Studio просто сохраняла позиции с самого начала, а не позиции времени выполнения. Лучше спросить, почему Google подумал, что сохранять позицию только во время выполнения - хорошая идея? Это ненужный шаг, чтобы заставить разработчиков кликнуть, чтобы определить позицию.
Энтони

Большое спасибо! Очень полезно
Пол

23
Я использую Android Studio 3.0 - при щелчке правой кнопкой мыши по виджету в раскрывающемся меню не было «Макет ограничения». Я понял, что есть значок, который выглядел как волшебная палочка в меню панели инструментов над предварительным просмотром дизайна, это также кнопка «Infer Constraints».
purpleladydragons

решение не может быть найдено в Android Studio версии 3 или более поздней
Мохаммад Хейдари,

75

Решение

Просто нажмите на нее, и она будет решена


Я не вижу панели инструментов с этой кнопкой. Как мне его найти?
i_am_david 08

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

12

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


11

вы можете попробовать следующее: 1. убедитесь, что вы добавили: compile 'com.android.support:design:25.3.1' (возможно, вам также следует добавить compile 'com.android.support.constraint: constraint-layout: 1.0.2' ) 2.введите описание изображения здесь

3. щелкните Infer Constraints , надеюсь, это поможет вам.


7

Хорошо, я знаю, что это старый ответ, но я узнал, как это сделать для версии 3.1.4. Так что для меня эта ошибка возникает всякий раз, когда я добавляю новый элемент в иерархию, поэтому я знал, что мне нужно решение. Поработав немного, я нашел, как это сделать, выполнив следующие действия:

  1. Щелкните объект правой кнопкой мыши и перейдите в Центр.

Шаг 1

  1. Затем выберите по горизонтали.

Шаг 2

  1. Повторите эти шаги, за исключением того, что нажмите «Вертикально» вместо «Горизонтально».

При условии, что этот метод все еще работает, после шага два вы должны увидеть волнистые линии, проходящие горизонтально по месту, где находится элемент, а после шага 3 - как по горизонтали, так и по вертикали. После третьего шага ошибка исчезнет!


6

Щелкните правой кнопкой мыши и затем создайте часть того компонента, в котором возникла ошибка, и выполните следующие действия:

  • [например если ошибка возникает в обычном тексте]

[1]

Макет ограничения обычного текста> Вывести ограничения:

наконец ошибка ушла


6

Щелкните виджет правой кнопкой мыши и выберите «по центру» -> «по горизонтали». Затем выберите «по центру» -> «по вертикали».


6

Начиная с Android Studio v3, Infer Constraint был удален из раскрывающегося списка.

Используйте значок волшебной палочки в меню панели инструментов над предварительным просмотром дизайна; есть кнопка " Infer Constraints ". Нажмите эту кнопку, это автоматически добавит несколько строк в текстовое поле, а красная линия будет удалена.

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


4

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


0

вы можете перейти к, а XML fileзатем сфокусировать курсор мыши на кнопке, текстовом представлении или любом Alt + Enterдругом месте, которое вы выберете для своего макета, затем нажмите, чтобы исправить это, после этого ошибка исчезнет. это работает для меня.


0

После нажатия на значок волшебной палочки, чтобы вывести ограничения:

1) В окне проектов перейдите в Gradle Scripts> build.gradle (Модуль: приложение)

2) Прокрутите вниз до зависимостей

3) Найдите реализацию com.android.support:appcompat-v7:28.0.0-beta03.

4) Измените эту строку на реализацию com.android.support:appcompat-v7:28.0.0-alpha1.

5) В верхней части окна должен появиться баннер, нажмите «Синхронизировать сейчас» в правом углу.

Это работает для Android Studio v3.1, щелкните изображение для редактирования файла build.gradle.


0

При создании макета проще работать с одним элементом управления за раз, чем добавлять их все сразу.

Из палитры макетов перетащите ConstraintLayout на экран.

Переместите желаемые элементы управления внутри ConstraintLayout.

Таким образом, ConstraintLayout теперь будет родительским элементом управления, и если вы переключитесь на XML-код, элементы управления будут вложены в ConstraintLayout.

Щелкните правой кнопкой мыши элемент управления, выберите в меню «Ограничение» и выберите, как вы хотите выровнять его с родительским ConstraintLayout, верхним, стартовым и т. Д.

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

Дополнительная информация: https://developer.android.com/training/constraint-layout

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

введите описание изображения здесь Вы можете указать расстояние разделения ограничений на вкладке Constraint Layout:

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.