Step 1: Add the JitPack repository to your build file
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2: Add the dependency
dependencies {
implementation 'com.github.denora-team:Android-StateLayout:$version'
}
Step 1: Add the layout to your xml file
<ir.denora.statelayout.StateLayout
android:id="@+id/stateLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
</ir.denora.statelayout.StateLayout>
Step 2: Change state of the layout using one of the methods below when ever you needed:
stateLayout.showContent()
stateLayout.showLoading()
stateLayout.showEmpty()
stateLayout.showNotFound()
stateLayout.showNoNetwork()
stateLayout.showError()
Optional step:
Optional: use
app:defaultLayout
attribute to consider a state as starting state of the layout
VALUES: [content
|loading
|empty
|error
|NotFound
|NoNetwork
] (default:content
)
EXAMPLE:app:defaultLayout="loading"
Optional: use below attributes to override layouts for any of states (or you can use the default layouts by skipping this step)
app:loadingLayout="@layout/my_default_loading_layout"
app:errorLayout="@layout/my_error_layout"
app:notFoundLayout="@layout/my_not_found_layout"
app:noNetworkLayout="@layout/my_no_network_layout"
An example of a layout with all available attributes:
<ir.denora.statelayout.StateLayout
android:id="@+id/stateLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultLayout="loading"
app:loadingLayout="@layout/my_loading_layout"
app:emptyLayout="@layout/my_empty_layout"
app:errorLayout="@layout/my_error_layout"
app:notFoundLayout="@layout/my_not_found_layout"
app:noNetworkLayout="@layout/my_no_network_layout">
...
</ir.denora.statelayout.StateLayout>
- Add
retry
and a listener in error states - Add a feature to add custom states