Почему Android Studio удаляет и / или меняет ограничения layout_margin *?

Я использую android.support.constraint.ConstraintLayout для компоновки представлений контента простой карты.

Я получаю случайные изменения в моем XML, каждый раз, когда:

  • Я перехожу на вкладку « Design » в Studio Studio
  • Или когда у меня Preview панель Preview (в этом случае изменения происходят еще чаще во время моих изменений).

Эти случайные изменения включают:

  • Удаление моих вручную заданных полей макета (например, layout_marginEnd )
  • Изменение значений введенного вручную значения маржи
  • Добавление tools:layout_editor_absoluteX значения tools:layout_editor_absoluteX

Вопросов:

  • Кто-нибудь еще испытывает эту функцию Android Studio?
  • Как отключить эту функцию, чтобы мои макеты не были уничтожены?
  • Где сообщить об этой ошибке Google или JetBrains?

Пожалуйста, взгляните на этот файл diff, который был сделан автоматически при переключении на вкладку «Дизайн»: Автоматически внесенные изменения «diff» в XML-файл макета

PS: Моя версия Android Studio – 2.2.3 ; Я запускаю его на macOS Sierra.

Обновление # 1

Как было предложено, после создания layout_height="match_parent" , я получаю изменения реже, но все же мой XML становится испорченным, когда я редактирую макет в Layout Design'er: Автоматические изменения # 2 На этот раз я хотел установить layout_marginTop через интерфейс разработки (выбранная строка – это то, что я хотел добавить), но я также получил эти другие нежелательные изменения:

  • layout_marginStart удален;
  • app:layout_constraintBottom_toBottomOf ссылочные идентификаторы получили префикс знака «+», а это значит, что эти идентификаторы вновь объявлены, поэтому, когда я буду использовать функции Goto declaration , мне придется выбирать его из списка – не желаемое поведение.
  • tools:layout_editor_absoluteX добавляется. Я мог игнорировать это, но все же – не то, что я хотел бы произойти.

Solutions Collecting From Web of "Почему Android Studio удаляет и / или меняет ограничения layout_margin *?"

Как отметил @JoeyJubb, использование layout_height="match_parent" решает эту проблему. По крайней мере XML не изменяется. Хотя, иногда предварительный просмотр генерируется некорректно.

Я замечал ту же проблему с Android Studio 2.3, этот код менялся автоматически каждый раз, когда я переходил из текстового представления, чтобы проектировать представление в недавнем проекте с помощью ConstraintLayout. – Я уверен, что это происходит с RelativeLayout или любым другим макетом, который вы хотите использовать.

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

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

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