XML attributes order in Android Studio
Android StudioCode FormattingAndroid Studio Problem Overview
I'm facing problem with keeping proper order of XML attributes in Android Studio. As you can see below, the style
attribute is between layout_*
attributes, but I want it to be ordered by name (like in Eclipse). I'm using standard Intellij code formatter and the Android Studio gives users ability to set your own rules regarding XML ordering. The settings are located in Code Style -> XML -> Arrangement
, but it seems not to work or I'm using it wrong. Any ideas how to order XML attributes by name using default code formatter?
<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 Solutions
Solution 1 - Android Studio
Finally got it.
- Choose
File > Settings > Code Style > XML > Set from > Predefined Style > Android
- Set
File > Settings > Editor > Formatting > Show "Reformat Code" dialog
- Run formatting on a XML file (
CTRL+ALT+L
by default) - You will see a popup window, set the
Rearrange entries
flag - Disable
Reformat Code
dialog in the settings
This way every XML file formatting will set the attributes in a proper order.
Edit:
Starting with Android Studio 0.2.6 release the XML Android style formatting is set by default, but you still have to set the Rearrange Entries
flag manually.
http://tools.android.com/recent/androidstudio026released
> Automatically apply the Android XML code style if a code style hasn't > already been customized. This will make it possible to automatically > order XML attributes (check the "Rearrange Entries" checkbox in the > "Code > Reformat Code..." dialog.)
Solution 2 - Android Studio
UPDATE: the method I described below is an official way to fix this known issue, see: https://developer.android.com/studio/releases
After updating to the newest Android Studio v3.4.2
I found that it doesn't format XML code properly anymore. For instance, attributes ordering didn't work in layouts
. It did indentation and namespaces ordering only.
I don't know the reason why it was broken after an update but was lucky to fix this:
- Go to
Settings
(CMD
+
,
) on Mac. - Type
format
in Search box and click onEditor -> XML
setting. - Click on the
Android
tab and make the same settings here as it's on a picture:
> Settings on a picture quite normal, but of course you can tune this tab setting up to you.
- Go to the
Arrangement
tab and you will see something like this:
> The reason why attributes are not getting sorted - sorting rules are empty.
-
To fix this:
-
Choose
Scheme
and play withDefault IDE
andProject
options. Switching between them may help. -
Or choose
Scheme
which suites your needs and then click onSet from...
blue text in right upper corner-> Predefined Style -> Android
. You will see restored rules in the window:
>
I also chose Force rearrange - Always
To save result – click Apply
.
Also you can click on a gear icon near Scheme
and copy settings or even restore defaults.
P.S. To me standard rules are comfortable, but it can be customized further. Here is an article which may help doing this: https://medium.com/@VeraKern/formatting-xml-layout-files-for-android-47aec62722fc
Solution 3 - Android Studio
Go to your layout XML
Try Ctrl + alt + shift + L then find checkbox label is Rearrange code and checked its.
Solution 4 - Android Studio
To delete empty lines between them:
Preferences > Code Style > XML > Other > Keep blank lines: 0
And then just reformat your XML files.
Solution 5 - Android Studio
There is a plugin for IntelliJ which might do what you're after...
Solution 6 - Android Studio
File > Settings > Editor > XML > Arrangement Select Scheme and choose Default