# roughike/bottombar

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/roughike-bottombar).**

8,358 stars · 1,475 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/roughike/BottomBar
- awesome-repositories: https://awesome-repositories.com/repository/roughike-bottombar.md

## Topics

`android` `bottom-navigation` `java` `library` `material-design`

## Description

BottomBar is an Android UI component that implements a Material Design bottom navigation bar. It serves as a reusable layout element for organizing top-level application destinations through a system of selectable tabs.

The component features an adaptive layout system that optimizes horizontal space for tablet displays and uses density-aware adjustments for different screen dimensions. It includes a notification badge system to alert users of updates and supports conditional selection interception to prevent navigation based on application state or permissions.

The library covers a broad range of navigation capabilities, including scroll-based visibility controls, active state indicators, and tab interaction management. Navigation items, icons, and colors can be configured via XML resource files to separate content from the component layout.

## Tags

### User Interface & Experience

- [Material Design Libraries](https://awesome-repositories.com/f/user-interface-experience/material-design-libraries.md) — Implements a bottom navigation bar that follows Material Design specifications for primary app destinations.
- [Bottom Navigation Bars](https://awesome-repositories.com/f/user-interface-experience/bottom-navigation-bars.md) — Implements a custom Material Design bottom navigation bar for tabbed navigation on Android.
- [Navigation Bars](https://awesome-repositories.com/f/user-interface-experience/navigation-components/navigation-bars.md) — Provides a persistent navigation bar that organizes top-level destinations with selection logic and badges.
- [Custom View Rendering](https://awesome-repositories.com/f/user-interface-experience/programmatic-element-construction/android-view-lifecycle-tracking/custom-view-rendering.md) — Implements a specialized Android View subclass that overrides measurement and drawing methods to render the navigation bar.
- [Responsive Layout Optimizations](https://awesome-repositories.com/f/user-interface-experience/responsive-layout-optimizations.md) — Includes an adaptive layout system that optimizes horizontal space and navigation elements for tablet displays. ([source](https://github.com/roughike/BottomBar/blob/master/README.md))
- [Event Handling](https://awesome-repositories.com/f/user-interface-experience/tab-selection-mechanisms/event-handling.md) — Implements an event system to execute specific application actions and state changes when a navigation tab is selected. ([source](https://github.com/roughike/BottomBar/blob/master/README.md))
- [Dynamic Visibility Toggles](https://awesome-repositories.com/f/user-interface-experience/navigation-bar-controls/dynamic-visibility-toggles.md) — Toggles the visibility of the navigation bar based on user interactions or application states. ([source](https://github.com/roughike/BottomBar/blob/master/CHANGELOG.md))
- [Interaction Controls](https://awesome-repositories.com/f/user-interface-experience/navigation-tabs/interaction-controls.md) — Provides a system to manage touch feedback, ripple effects, and long-press behaviors for navigation tabs. ([source](https://github.com/roughike/BottomBar/blob/master/CHANGELOG.md))
- [Resource-Based Configurations](https://awesome-repositories.com/f/user-interface-experience/navigation-tabs/resource-based-configurations.md) — Supports defining navigation items, icons, and selection colors within XML resource files to separate content from layout. ([source](https://github.com/roughike/bottombar#readme))
- [XML Configurations](https://awesome-repositories.com/f/user-interface-experience/navigation-tabs/xml-configurations.md) — Allows navigation items and icons to be defined in XML resource files to decouple content from layout.
- [Notification Badges](https://awesome-repositories.com/f/user-interface-experience/notification-badges.md) — Implements a visual indicator system for attaching markers to tabs to alert users of updates or unread counts. ([source](https://github.com/roughike/bottombar#readme))
- [Device-Aware Layouts](https://awesome-repositories.com/f/user-interface-experience/responsive-design-patterns/device-aware-layouts.md) — Adjusts the width and spacing of navigation elements based on physical screen dimensions to optimize for tablets.
- [Tablet Layout Adaptations](https://awesome-repositories.com/f/user-interface-experience/screen-space-optimization/tablet-layout-adaptations.md) — Optimizes the appearance and layout of navigation elements to better fit the horizontal space of larger screens.
- [Selection Interception](https://awesome-repositories.com/f/user-interface-experience/tab-selection-mechanisms/selection-interception.md) — Provides conditional logic to prevent navigation to specific tabs based on user permissions or application state. ([source](https://github.com/roughike/bottombar#readme))
- [Active State Indicators](https://awesome-repositories.com/f/user-interface-experience/tabs/active-state-indicators.md) — Uses dynamic icon and color updates to visually indicate the currently active navigation item. ([source](https://github.com/roughike/BottomBar/blob/master/README.md))
- [Touch Event Interception](https://awesome-repositories.com/f/user-interface-experience/touch-event-interception.md) — Provides capabilities to intercept and block touch events from reaching navigation tabs based on state or permission checks.

### Mobile Development

- [Android App Navigation](https://awesome-repositories.com/f/mobile-development/android-app-navigation.md) — Implements a selectable tab system at the bottom of the screen to organize top-level Android application links.
- [Android UI Components](https://awesome-repositories.com/f/mobile-development/android-ecosystem/android-ui-components.md) — Provides a reusable Android UI component that handles touch interactions and visual states for navigation.
- [Navigation Visual Feedback](https://awesome-repositories.com/f/mobile-development/android-app-navigation/navigation-visual-feedback.md) — Provides visual feedback such as touch ripples, notification badges, and active state indicators during navigation.
- [Tab Styling Customizations](https://awesome-repositories.com/f/mobile-development/android-ecosystem/android-ui-components/tab-styling-customizations.md) — Provides options to customize colors, fonts, and icons of navigation tabs to match a specific brand theme.
- [Tablet Layout Adapters](https://awesome-repositories.com/f/mobile-development/android-layout-components/tablet-layout-adapters.md) — Adjusts navigation interface proportions to optimize horizontal space on larger Android displays.

### Software Engineering & Architecture

- [UI Event-Driven Navigation](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-architectures/ui-event-driven-navigation.md) — Uses event-driven patterns to execute callback functions in the parent activity when navigation tabs are selected.
- [Visual State Triggers](https://awesome-repositories.com/f/software-engineering-architecture/schema-based-state-validation/cross-state-validation/state-change-triggers/visual-state-triggers.md) — Dynamically updates icon colors and styles based on the active selection state of navigation items.

### Part of an Awesome List

- [Scroll-Driven Visibility](https://awesome-repositories.com/f/awesome-lists/devtools/scroll-based-animations/scroll-driven-visibility.md) — Automatically hides the navigation bar from the screen when a scroll event is detected in the content area.
- [UI Components](https://awesome-repositories.com/f/awesome-lists/devtools/ui-components.md) — Material Design bottom navigation.
