SublimeNavigationView

repository·master·Indexed 43 days ago

https://github.com/vikramkakkar/sublimenavigationview

A rewrite of the Android Design Support library's NavigationView that extends menu capabilities to support Checkboxes, Switches, Badges, and collapsible groups while maintaining state via Parcelable menus.

Tokens
1K
Snippets
4
Records
5
Agent score
5%

What's inside SublimeNavigationView

  1. Define menu items in XML

    master

    Menus are defined using standard XML. SublimeNavigationView uses a custom MenuInflater to parse these definitions. Supported item types include Text, TextWithBadge, and Separator.

    <!-- Basic Text item -->
    <Text
        android:id="@+id/text_item_1"
        android:title="Independent item"
        android:hint="(Optional) hint for this item"/>
    
    <!-- Text item with an icon -->
    <Text
        android:id="@+id/text_item_2"
        android:title="Independent item with icon"
        android:icon="@drawable/archive" />
    
    <!-- Text item that reserves icon space without showing an icon -->
    <Text
        android:id="@+id/text_item_5"
        android:title="Indented item"
        android:hint="Show icon space on-demand"
        app:showIconSpace="true"/>
    
    <!-- Divider/Separator -->
    <Separator
        android:id="@+id/separator_item_1" />
  2. Configure SublimeNavigationView styling and layout

    master

    You can customize the appearance of the SublimeNavigationView directly in your layout XML using several app: attributes:

    • app:snvHeaderLayout: Specifies the layout for the navigation header.
    • app:snvMenu: Specifies the menu resource.
    • app:snvItemTypefaceFilename: Custom typeface for standard items.
    • app:snvHintTypefaceFilename: Custom typeface for hints.
    • app:snvSubheaderItemTypefaceFilename: Custom typeface for subheader items.

    Alternatively, styling can be applied programmatically using an initialized SublimeThemer.

    <com.appeaser.sublimenavigationviewlibrary.SublimeNavigationView
        ....
        app:snvHeaderLayout="@layout/nav_header"
        app:snvMenu="@menu/test_nav_menu_1"
        app:snvItemTypefaceFilename="planer_bold_webfont.ttf"
        app:snvHintTypefaceFilename="planer_reg_webfont.ttf"
        app:snvSubheaderItemTypefaceFilename="planer_bold_webfont.ttf"/>
  3. Use TextWithBadge for asynchronous or static badges

    master

    The TextWithBadge item can be used in two modes:

    1. Uninitialized (Async): Displays an indeterminate ProgressBar until the value is provided. Use app:valueProvidedAsync="true" in XML.
    2. Initialized (Static): Displays a fixed value immediately. Use app:badgeText="VALUE" in XML.

    To update an uninitialized badge programmatically (e.g., after a network call), cast the menu item to SublimeTextWithBadgeMenuItem.

    // Updating an async badge programmatically
    ((SublimeTextWithBadgeMenuItem)snv.getMenu().getMenuItem(R.id.text_with_badge_item_1))
        .setBadgeText("25")
        .setValueProvidedAsync(false);