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


99

введіть тут опис зображенняНовий редактор макета в Android Studio 2.2 постійно відображає цю помилку у поданнях, таких як EditText та кнопки. Будь ласка, будь-які посилання, які допомагають приєднатися до нового макета обмежень, будуть вдячні.

код:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    android:id="@+id/activity_main"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.set.email.MainActivity"
    tools:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="81dp">

    <TextView
        android:text="To:"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteX="7dp"
        tools:layout_editor_absoluteY="4dp"
        android:id="@+id/textTo"/>

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress"
        android:ems="10"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="24dp"
        android:id="@+id/editTo"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>

    <EditText
        android:layout_width="384dp"
        android:layout_height="42dp"
        android:inputType="textPersonName"
        android:ems="10"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="94dp"
        android:id="@+id/editSubject"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>

    <EditText
        android:layout_width="384dp"
        android:layout_height="273dp"
        android:inputType="textPersonName"
        android:ems="10"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="179dp"
        android:id="@+id/editMessage"
        app:layout_constraintLeft_toLeftOf="@+id/activity_main"
        tools:layout_constraintLeft_creator="50"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>

    <Button
        android:text="Send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteX="140dp"
        tools:layout_editor_absoluteY="454dp"
        android:id="@+id/btnSend"
        app:layout_constraintLeft_toLeftOf="@+id/editMessage"
        tools:layout_constraintLeft_creator="0"
        app:layout_constraintRight_toRightOf="@+id/activity_main"
        android:layout_marginEnd="16dp"
        tools:layout_constraintRight_creator="0"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>


</android.support.constraint.ConstraintLayout>

Яка помилка? Опишіть, будь ласка, вашу фактичну проблему. Це недостатньо детально.
Лексі,

Ви можете поділитися своїм xml-кодом ??
Janki Gadhiya

Закінчивши викладати макет обмежень, натисніть кнопку, щоб автоматично додати всі відсутні обмеження.
Alex Cohn,

1
кнопка? ви маєте на увазі лампочку червоного ворсу? не відображається жодна опція для автоматичного додавання відсутніх обмежень.
onexf

Відповіді:


81

Макет обмеження спрямований на зменшення ієрархії макетів і покращує ефективність макетів (технічно, вам не потрібно вносити зміни для різних розмірів екрану, відсутність перекриття, працює як шарм на мобільному телефоні, а також вкладка з однаковими обмеженнями). Ось як Ви позбавляєтеся вищевказаної помилки, використовуючи новий редактор макета.

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

Клацніть на маленьке коло та перетягуйте його ліворуч, поки коло не стане зеленим, щоб додати ліве обмеження (введіть число, скажімо x dp. Повторіть його з іншими сторонами, а нижнє обмеження залиште порожнім, якщо у вас є інший вигляд під ним) . введіть тут опис зображення

Редагувати: За даними сайту розробників, замість того, щоб додавати обмеження до кожного подання, коли ви розміщуєте їх у макеті, ви можете перемістити кожне представлення у потрібні позиції, а потім клацнути «Ввести обмеження» для автоматичного створення обмежень. більше тут


Я щойно додав перегляд зображень у макет контранта, але не відображається під час запуску програми. Ви можете мені допомогти?
PriyankaChauhan

79

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

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

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


1
У моєму випадку це додає лише обмеження ігнорування, але це не вирішує проблему
mrroot5,

це рішення простіше, ніж найкраще. Але працює лише для AS v3 та пізніших версій.
Йоханес А.І.

42

Просто скопіюйте цей код до всіх компонентів, які ви будете перетягувати.

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"

приклад:

<TextView
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    android:text="To:"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:layout_editor_absoluteX="7dp"
    tools:layout_editor_absoluteY="4dp"
    android:id="@+id/textTo"/>

5
Але чому? Ви можете пояснити його подробиці?
Prathamesh More

22

Перейдіть до «Дизайн», клацніть правою кнопкою миші на своєму віджеті «Розмітка обмежень»> «Введіть обмеження». Ви можете помітити, що якийсь код автоматично додано до вашого тексту.


Так, висновок обмежень використовує значення за замовчуванням, зазначені у файлі
Activity.xml


4

Якщо Inferring the Constraintsвсе-таки видає вам помилку, просто скористайтеся цим кодом:

app:layout_constraintBottom_toBottomOf="parent"

2

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

Модифікований код буде виглядати приблизно так:

    app:layout_constraintLeft_toLeftOf="@+id/router_text"
    app:layout_constraintTop_toTopOf="@+id/activity_main"
    android:layout_marginTop="320dp"
    app:layout_constraintBottom_toBottomOf="@+id/activity_main"
    android:layout_marginBottom="16dp"
    app:layout_constraintVertical_bias="0.29" 

1

Перейдіть до тексту XML-макета, де віджет (кнопка або інший вигляд) вказує на помилку, сфокусуйте там курсор і натисніть alt+ enterта виберіть відсутні атрибути обмежень.


Він також дає попереджувальне повідомлення про те, що жорстко закодований рядок "TextView" повинен використовувати ресурс @string
Мохаммад Гейдарі

1

наприклад, у мене це є

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

використовуйте макет RelativeLayout таким чином

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

1

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

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

Дизайн дизайну


1
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"

Це мені дуже допомогло


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