Ця точка зору не обмежена


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 :

"Розміщення обмежень" немає у спадному меню. Використовуйте піктограму чарівної палички в меню панелі інструментів над попереднім переглядом дизайну; є кнопка "Вивести обмеження".


2
Велике спасибі за ваше рішення, я абсолютно новачок, я навіть не уявляв, що не так з позицією віджета
Атул Чаван

2
Чудове рішення, хоча я бажаю, щоб Android Studio просто зберігав позиції з самого початку, а не позиції часу виконання. Краще запитання - чому Google вважає, що це гарна ідея зберігати позицію лише під час роботи? Це непотрібний крок, щоб змусити розробників клацати, щоб вивести позицію.
Антоній,

Дуже дякую! Дуже корисно
Пол

23
Я використовую Android Studio 3.0 - "Розкладка обмежень" не була у спадному меню, коли я клацнув правою кнопкою віджет. Я зрозумів, що в меню панелі інструментів над попереднім переглядом дизайну є піктограма, яка виглядала як чарівна паличка, це також кнопка "Вивести обмеження".
purpleladydragons

рішення вже не можна знайти в Android Studio версії 3 або новішої
Мохаммад Гейдарі

74

Рішення

Просто натисніть це, і це буде вирішено


Я не бачу панелі інструментів із цією кнопкою. Як мені його знайти?
i_am_david

Я не знаю, чи використовуєте ви іншу версію Android Studio. Перевірте цю кнопку, вона повинна бути десь там. Якщо ви не можете знайти, є й інші рішення
Cem U

12

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


11

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

3. клацніть на Infer Constraints , сподіваючись, це може вам допомогти.


7

Добре, тому я знаю, що ця відповідь стара, але я дізнався, як це зробити для версії 3.1.4. Тож для мене ця помилка виникає щоразу, коли я ввожу новий елемент в ієрархію, тому я знав, що мені потрібно рішення. Трохи повозившись, я знайшов, як це зробити, виконавши такі дії:

  1. Клацніть об'єкт правою кнопкою миші та перейдіть до Центру.

Крок 1

  1. Потім виберіть Горизонтально.

Крок 2

  1. Повторіть ці кроки, за винятком того, що натискаєте Вертикально, а не Горизонтально.

За умови, що цей метод все ще працює, після другого кроку ви побачите криволінійні лінії, що йдуть горизонтально поперек місця, де знаходиться елемент, а після третього кроку - як горизонтально, так і вертикально. Після третього кроку помилка зникне!


6

Клацніть правою кнопкою миші, а потім проектуйте частину того компонента, в якому ви отримали помилку, і виконайте такі дії:

  • [напр. якщо у звичайному тексті сталася помилка]

[1]

Макет обмеження звичайного тексту> Infer Constraints:

нарешті помилка пішла


6

Клацніть правою кнопкою миші на віджеті та виберіть "центр" -> "горизонтально". Потім виберіть "центр" -> "вертикально".


6

З Android Studio v3 і новіших версій Infer Constraint було вилучено зі спадного меню.

Використовуйте піктограму чарівної палички в меню панелі інструментів над попереднім переглядом дизайну; є кнопка " Вивести обмеження ". Натисніть на цю кнопку, це автоматично додасть кілька рядків у текстове поле, а червоний рядок буде видалено.

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


4

Вам просто потрібно клацнути правою кнопкою миші на віджеті та вибрати "по центру" -> "по горизонталі" і зробити це ще раз, потім вибрати -> "по вертикалі" Це у мене спрацювало ...


0

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


0

Після натискання на піктограму чарівної палички для виведення обмежень:

1) У вікні Проекти перейдіть до скриптів Gradle> 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.

Клацніть правою кнопкою миші на своєму елементі управління, виберіть Constraint у меню та виберіть, як ви хочете вирівняти його з батьківським ConstraintLayout, top, start тощо.

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

Більше інформації: https://developer.android.com/training/constraint-layout

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

введіть тут опис зображення Ви можете вказати відстань між розділеннями обмежень на вкладці "Розкладка обмежень":

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.