ConstraintLayout вид в левом верхнем углу

Каждый раз, когда я создаю вид, как Button а также TextView в ConstraintLayoutвсе они застряли в верхнем углу вместо того, где я их разместил.

Я пытался создать новые действия и изменить эмулятор, но результат все тот же.

Это скриншот того, что происходит:

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

В чем может быть проблема?

4 ответа

Решение

Как указано в руководствах по макету ограничений:

Если представление не имеет ограничений при запуске макета на устройстве, оно рисуется в позиции [0,0] (верхний левый угол).

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

Я полагаю, вы не применили никаких ограничений.

Либо вручную примените ограничения к представлению, либо позвольте редактору макета сделать это за вас, используя кнопку "Infer constraints":

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

Когда вы перетаскиваете представление в редактор макетов, оно остается там, где вы его оставляете, даже если оно не имеет ограничений... это только для облегчения редактирования

Другими словами, представление будет "оставаться там, где вы его оставили", пока вы не добавите ограничения.

Причина, по которой он выглядит по-разному в Preview против вашего приложения, заключается в том, что все, что есть в вашем XML с tools: будет удален из кода при запуске приложения. Эти параметры предназначены только для редактора макетов Android Studio и не отражают того, что следует ожидать при запуске кода.

И это может быть неприятно для начинающих, потому что

отсутствующее ограничение не приведет к ошибке компиляции

тем не мение

Редактор макетов указывает на отсутствующие ограничения как ошибку на панели инструментов. Чтобы просмотреть ошибки и другие предупреждения, нажмите Показать предупреждения и ошибки (красная кнопка с номером). Чтобы помочь вам избежать пропущенных ограничений, редактор макетов может автоматически добавлять ограничения для вас с помощью функций автоматического подключения и определения ограничений

Подробнее

Быстрый и простой способ исправить это - щелкнуть по компоненту (TextView, ImageView и т. Д.) И нажать кнопку "Вывести ограничения". Похоже, 2 желтых плюса.

выводить ограничения изображения

выводить ограничения изображения

Добавить это в XML для кнопки и т. д.

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.57"

тогда поиграй с этим в дизайн.

Удачи!:)

В основном этот тип проблемы возникает при использовании ConstraintLayout.

  • Итак, перейдите к предварительному просмотру из Android Studio.

  • Выберите ту кнопку, которую вы хотите установить в определенной позиции

  • Наконец, просто нажмите на кнопку " Вывести ограничения", как я упомянул на рисунке ниже, на красном круге.

Это все запустить проект и увидеть магию

Спасибо

Другие вопросы по тегам