Material Segmented Buttons

Segmented Buttons inspired by Google’s Material 3 Design Guideline with dynamic color support

Screenshots

Installation

Add this in your project level gradle file

  allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

after that, add this dependency to your app level gradle file

implementation 'com.github.Esarve:MaterialSegmentedButton:release-version' 

Current release version:

Usage

This library was designed to be as close as possible to the Material 3 components. just use the SegmentedButton to use the button in any place. Use a list of SegmentedButtonItem for adding the child items into the button. A demo is provided below:

val itemList = listOf(
    SegmentedButtonItem(
        leadingIcon = {
            // Icon composable goes here
        }

        title = {
            // Text composable goes here
        }

        onClick = {
            // on click for this item goes here
        }
    ),

    SegmentedButtonItem(
            leadingIcon = {
                // Icon composable goes here
            }

            title = {
                // Text composable goes here
            }

            onClick = {
                // on click for this item goes here
            }
        ),

)

SegmentedButton(
    items = itemList,
    modifier = Modifier
        .fillMaxWidth()
        .padding(horizontal = 8.dp, vertical = 32.dp)
)

SegmentedButton with custom corner radius and colors

SegmentedButton{
    item = itemList,
    color = SegmentedButtonDefaults.segmentedButtonColors(
         containerColor = MaterialTheme.colorScheme.tertiaryContainer,
         selectedContainerColor = MaterialTheme.colorScheme.tertiary
         //more arguments availabe here
    ),
    cornerRadius = SegmentedButtonDefaults.segmentedButtonCorners(40) //or you can individually mention each corners here
    showIconForSelectedOnly = true // this keep the icon for selected item visible only
}

check out this gist for more usage https://gist.github.com/Esarve/98f8baaa9b73540800fc208dc013dc60

Acknowledgements

GitHub

View Github