Skip to content

Instantly share code, notes, and snippets.

@yveskalume
Last active March 17, 2024 17:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yveskalume/469c3721ee43620d6e9eb76601b0caf4 to your computer and use it in GitHub Desktop.
Save yveskalume/469c3721ee43620d6e9eb76601b0caf4 to your computer and use it in GitHub Desktop.
ButtonWithLongClick.kt
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun Button(
onClick: () -> Unit,
onLongClick: () -> Unit,
modifier: Modifier = Modifier,
shape: Shape = ButtonDefaults.shape,
containerColor: Color,
contentColor: Color,
border: BorderStroke? = null,
contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
content: @Composable RowScope.() -> Unit
) {
Surface(
modifier = modifier
.semantics { role = Role.Button }
.combinedClickable(enabled = true, onClick = onClick, onLongClick = onLongClick),
shape = shape,
color = containerColor,
contentColor = contentColor,
border = border,
) {
CompositionLocalProvider(LocalContentColor provides contentColor) {
ProvideTextStyle(value = MaterialTheme.typography.labelLarge) {
Row(
Modifier
.defaultMinSize(
minWidth = ButtonDefaults.MinWidth,
minHeight = ButtonDefaults.MinHeight
)
.padding(contentPadding),
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically,
content = content
)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment