Productivity
:sheep: An adaptive and lightweight tab layout for Android :sheep:
AustinTabView
to a layout file<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<me.austinng.austintab.AustinTabView
android:id="@+id/austinTabView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:indicator_style="SEGMENTED_CONTROL"
app:tab_container_padding="4dp"
app:tab_style="ADAPTIVE"
app:tab_badge_font="@font/ubuntu_medium"
app:tab_text_font_active="@font/ubuntu_medium"
app:tab_text_font_inactive="@font/ubuntu_regular" />
</LinearLayout>
austinTabView.setData(
listOf(
TabData("Home", icon = R.drawable.ic_home),
TabData("Notifications", badge = "3"),
TabData("Profile"),
)
)
austinTabView.setTabSelectedListener { index ->
Log.d("AustinTabView", "Index $index selected")
}
austinTabView.setTabReselectedListener { index ->
Log.d("AustinTabView", "Index $index reselected")
}
austinTabView.setTabUnSelectedListener { index ->
Log.d("AustinTabView", "Index $index unselected")
}
You can find additional examples of usage and customization here.
Jitpack Repository
to your settings.gradle
file:maven { url 'https://jitpack.io' }
build.gradle
file, add the dependency:dependencies {
implementation 'com.github.austin17ng:austin-tab:1.0.0'
}
Attributes | Default value | Description |
---|---|---|
offset | 16dp | Space between the tab and screen edges |
enable_auto_scroll | true | Automatically centers the selected tab on the screen. |
enable_animation | false | Enables tab translation animation |
tab_container_background | ![]() TAB ), ![]() SEGMENTED ) | Background of the tab container |
tab_container_padding | 0dp | Padding for the tab container |
tab_style | ADAPTIVE | Tab style: ADAPTIVE or EQUAL |
indicator_style | TAB | Indicator style: TAB or SEGMENTED_CONTROL |
indicator_src | ![]() TAB ), ![]() SEGMENTED ) | Drawable resource for the indicator |
indicator_height | 2dp | Height of the indicator (only for indicator_style = TAB ) |
tab_vertical_padding | 6dp | Vertical padding for tabs |
tab_horizontal_padding | 16dp | Horizontal padding for tabs |
tab_text_color_active | ![]() TAB ), ![]() SEGMENTED ) | Text color of the active tab |
tab_text_color_inactive | ![]() | Text color of inactive tabs |
tab_text_font_active | none | Font for the active tab |
tab_text_font_inactive | none | Font for inactive tabs |
tab_text_size | 14sp | Size of the tab text |
tab_icon_active_color | ![]() TAB ), ![]() SEGMENTED ) | Color for the active tab icon |
tab_icon_inactive_color | ![]() | Color for the inactive tab icon |
tab_badge_text_size | 10sp | Text size of the badge |
tab_badge_font | none | Font for the tab badge |
tab_badge_source | ![]() | Drawable resource for the badge |
tab_badge_color | ![]() | Text color of the badge |
tab_badge_position | TOP | Position of the badge: TOP , CENTER , or BOTTOM |
setData(data: List<TabData>)
setTabSelectedListener(listener: (index: Int) -> Unit)
setTabReselectedListener(listener: (index: Int) -> Unit)
setTabUnSelectedListener(listener: (index: Int) -> Unit)
attachWithViewPager2(viewPager2: ViewPager2)
getIndex(): Int
setIndex(index: Int)
Feel free to contribute by submitting issues or pull requests. And please ensure that all pull requests are checked out from the master
branch.
Austin Tab is licensed under the MIT License.