Порядок атрибутов XML в Android Studio


84

У меня проблема с поддержанием правильного порядка атрибутов XML в Android Studio. Как вы можете видеть ниже, styleатрибут находится между layout_*атрибутами, но я хочу, чтобы он был упорядочен по имени (как в Eclipse). Я использую стандартное средство форматирования кода Intellij, а Android Studio дает пользователям возможность устанавливать свои собственные правила в отношении упорядочивания XML. Настройки находятся в Code Style -> XML -> Arrangement, но вроде не работает или я неправильно использую. Есть идеи, как упорядочить атрибуты XML по имени с помощью средства форматирования кода по умолчанию?

<TestView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    style="@style/BackgroundLight"
    android:layout_height="wrap_content">

</TestView>

Обратите внимание: если в предварительном просмотре макета в Android Studio нет ошибки, то для ConstraintLayouts макет зависит от порядка атрибутов. Например, если я поставлю layout_height и layout_width после constraintX_toYof, то я получу другой результат, чем если бы я этого не делал.
nsandersen 01

Ответы:


188

Наконец то получил.

  1. выберите File > Settings > Code Style > XML > Set from > Predefined Style > Android
  2. Набор File > Settings > Editor > Formatting > Show "Reformat Code" dialog
  3. Запустить форматирование XML-файла ( CTRL+ALT+Lпо умолчанию)
  4. Вы увидите всплывающее окно, установите Rearrange entriesфлаг
  5. Отключить Reformat Codeдиалог в настройках

Таким образом, каждое форматирование файла XML будет устанавливать атрибуты в правильном порядке.

Изменить: начиная с выпуска Android Studio 0.2.6 форматирование стиля XML Android установлено по умолчанию, но вам все равно нужно установить Rearrange Entriesфлаг вручную.

http://tools.android.com/recent/androidstudio026released

Автоматически применять стиль кода Android XML, если стиль кода еще не был настроен. Это позволит автоматически упорядочивать атрибуты XML (установите флажок «Изменить порядок записей» в диалоговом окне «Код> Переформатировать код ...»).


1
Он переставляет атрибуты, но не удаляет пустые строки между ними
Максим Дмитриев

1
для ubuntu это CTRL + Shift + ALT + L
H Raval

Сочетание клавиш может отличаться в зависимости от платформы и конфигурации. Чтобы проверить или изменить его, перейдите в «Настройки» -> «Раскладка» -> «Переформатировать код»
TheIT

Этот ответ устарел, 2-й номер изменен. Используйте Ctrl + Alt + Shift + L.
CoolMind

24

ОБНОВЛЕНИЕ: описанный ниже метод является официальным способом решения этой известной проблемы, см. Https://developer.android.com/studio/releases.

После обновления до последней Android Studio v3.4.2я обнаружил, что он больше не форматирует XML-код должным образом. Так , например, attributes ordering didn't work in layouts. Он делал только отступы и упорядочивание пространств имен.

Я не знаю, почему он сломался после обновления, но мне повезло исправить это:

  1. Перейдите в Settings( CMD + ,) на Mac.
  2. Введите formatв поле поиска и нажмите на Editor -> XMLнастройку.
  3. Щелкните Androidвкладку и выполните здесь те же настройки, что и на картинке:

Вкладка Android в настройке форматирования XML Настройки на картинке вполне нормальные, но вы, конечно, можете настроить эту вкладку под себя.

  1. Перейдите на Arrangementвкладку и вы увидите что-то вроде этого:

Вкладка «Расположение» в настройках форматирования XML Причина, по которой атрибуты не сортируются - правила сортировки пусты.

  1. Чтобы исправить это:

    1. Выбрать Schemeи играть с Default IDEи Projectварианты. Переключение между ними может помочь.
    2. Или выберите подходящий Schemeвам вариант, а затем щелкните Set from...синий текст в правом верхнем углу -> Predefined Style -> Android. Вы увидите восстановленные правила в окне:

Наконец, вы увидите здесь восстановленные правила Я также выбрал Force rearrange - Always

Чтобы сохранить результат - нажмите Apply.

Также вы можете нажать на значок шестеренки рядом Schemeи скопировать настройки или даже восстановить значения по умолчанию.

PS Мне удобны стандартные правила, но их можно настроить дальше. Вот статья, которая может помочь в этом: https://medium.com/@VeraKern/formatting-xml-layout-files-for-android-47aec62722fc


6

Перейдите к XML-макету.
Попробуйте Ctrl + alt + shift + L, затем найдите метку флажка « Изменить порядок кода» и проверьте его.


5

Чтобы удалить пустые строки между ними:

Настройки> Стиль кода> XML> Другое> Оставить пустые строки: 0

А затем просто переформатируйте свои XML-файлы.


1
у меня работает очень хорошо. Между виджетами есть пустые строки, но не внутри кода виджета.
Matwosk

Как отформатировать файлы xml в студии Android? ctrl + alt + L у меня не работает в Mac
Rethinavel


0

Файл> Настройки> Редактор> XML> Расположение Выберите схему и выберите По умолчанию.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.