Новый редактор макетов в Android Studio 2.2 продолжает показывать эту ошибку в таких представлениях, как EditText и Buttons. любезно помогите. Также будут признательны за любые ссылки, которые помогут в адаптации с новым макетом ограничений.
код:
<?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>
Ответы:
Макет с ограничениями направлен на сокращение иерархии макетов и повышение производительности макетов (технически вам не нужно вносить изменения для разных размеров экрана, без перекрытия, работает как шарм на мобильном телефоне, а также вкладка с теми же ограничениями). Вот как вы избавитесь от указанной выше ошибки при использовании нового редактора макета.
Нажмите на маленький кружок и перетащите его влево, пока кружок не станет зеленым, чтобы добавить левое ограничение (укажите число, скажем x dp. Повторите его с другими сторонами и оставьте нижнее ограничение пустым, если у вас есть другой вид под ним. .
Изменить: согласно сайту разработчиков, вместо добавления ограничений к каждому представлению по мере их размещения в макете вы можете переместить каждое представление в нужные позиции, а затем щелкнуть Infer Constraints, чтобы автоматически создавать ограничения. подробнее здесь
источник
Начиная с Android Studio v3, Infer Constraint был удален из раскрывающегося списка.
Используйте значок волшебной палочки в меню панели инструментов над предварительным просмотром дизайна; есть кнопка " Infer Constraints ". Нажмите эту кнопку, это автоматически добавит несколько строк в текстовое поле, а красная линия будет удалена.
источник
Просто скопируйте этот код во все компоненты, которые вы будете перетаскивать.
пример:
источник
Перейдите в Дизайн, щелкните правой кнопкой мыши свой виджет, Макет ограничения >> Вывести ограничения. Вы можете заметить, что некоторый код был автоматически добавлен в ваш текст.
источник
источник
Если Inferring по-
Constraints
прежнему дает вам ошибку, просто используйте этот код:источник
Вам нужно перетащить за
EditText
край макета, а не только за другой виджет. Вы также можете добавить ограничения, просто перетащив точку ограничения, окружающую виджет, к краю экрана, чтобы добавить ограничения, как указано.Измененный код будет выглядеть примерно так:
источник
Перейдите к тексту макета XML, где виджет (кнопка или другое представление) указывает на ошибку, наведите курсор на него, нажмите alt+ enterи выберите отсутствующие атрибуты ограничений.
источник
например у меня есть это
используйте макет RelativeLayout, как это
источник
Просто переключитесь в представление «Дизайн» и найдите соответствующий виджет. Возьмите одну из точек на границе виджета и присоедините ее к соответствующему краю экрана (или к точке на каком-либо другом виджете).
Например, если виджет является панелью инструментов, просто возьмите самую верхнюю точку и присоедините ее к самому верхнему краю экрана телефона, как показано на изображении.
источник
Это мне очень помогает
источник
Вам нужно изменить
androidx.constraintlayout.widget.ConstraintLayout
наRelativeLayout
.источник