axmlfmt is an opinionated formatter for Android XML resources. It takes XML that looks like
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
tools:context=".MainActivity">
<!-- Not using AppCompat to reduce app size -->
<Toolbar
android:layout_width="match_parent"
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:title="@string/app_name"/>
<ScrollView
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:fillViewport="true">
<EditText
android:id="@+id/text"
android:layout_width="match_parent"
android:importantForAutofill="no"
android:layout_height="wrap_content"
android:textSize="16sp">
</EditText>
</ScrollView>
</LinearLayout>and turns it into
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<!-- Not using AppCompat to reduce app size -->
<Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:title="@string/app_name" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:fillViewport="true"
android:layout_weight="1">
<EditText
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:importantForAutofill="no"
android:textSize="16sp" />
</ScrollView>
</LinearLayout>Pre-compiled binaries of axmlfmt can be downloaded from
the releases page.
Alternatively, you can install it with with the
go command by running:
go install github.com/rsookram/axmlfmt/cmd/axmlfmt@latestOne way you may want to use axmlfmt is to have it format all the XML files in a git repository. This can be done with the following command:
git ls-files '*.xml' | xargs axmlfmt -wThe full usage description is:
USAGE:
axmlfmt [FLAGS] [FILE]...
FLAGS:
-h, -help, --help Prints help information
-V Prints version information
-w Writes result to (source) file instead of stdout
ARGS:
<FILE>... Path of XML files to format
axmlfmt can be built from source by cloning this repository and using the go
command.
git clone https://github.com/rsookram/axmlfmt
cd axmlfmt
go build ./cmd/axmlfmtCopyright 2019 Rashad Sookram
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.