implementation "com.github.skgmn:composetooltip:0.2.0"
Tooltip
can be either used inside ConstraintLayout or displayed as a popup.
ConstraintLayout {
val someImage = createRef()
Image(
painter = painterResource(R.drawable.some_image),
contentDescription = "Some image"
modifier = Modifier.constrainAs(someImage) {
// Place it where you want
}
)
Tooltip(
anchor = someImage,
anchorEdge = AnchorEdge.Top,
) {
Text("This is my image!")
}
}
fun ConstraintLayoutScope.Tooltip(
anchor: ConstrainedLayoutReference,
anchorEdge: AnchorEdge,
modifier: Modifier = Modifier,
tooltipStyle: TooltipStyle = rememberTooltipStyle(),
tipPosition: EdgePosition = remember { EdgePosition() },
anchorPosition: EdgePosition = remember { EdgePosition() },
margin: Dp = 8.dp,
content: @Composable RowScope.() -> Unit
)
anchor
-ConstrainedLayoutReference
to locate this tooltip nearbyanchorEdge
- Can be either ofAnchorEdge.Start
,AnchorEdge.Top
,AnchorEdge.End
, orAnchorEdge.Bottom
tooltipStyle
- Style for tooltip. Can be created byrememberTooltipStyle
tipPosition
- Tip position relative to balloonanchorPosition
- Position on theanchor
's edge where the tip points out.margin
- Margin between tip andanchor
content
- Content inside balloon. TypicallyText
.
Tooltip
also supports enter/exit transition using AnimatedVisibility
. Because AnimatedVisibility
is experimental, this method is also experimental.
fun ConstraintLayoutScope.Tooltip(
anchor: ConstrainedLayoutReference,
anchorEdge: AnchorEdge,
enterTransition: EnterTransition,
exitTransition: ExitTransition,
modifier: Modifier = Modifier,
visible: Boolean = true,
tooltipStyle: TooltipStyle = rememberTooltipStyle(),
tipPosition: EdgePosition = remember { EdgePosition() },
anchorPosition: EdgePosition = remember { EdgePosition() },
margin: Dp = 8.dp,
content: @Composable RowScope.() -> Unit
)
enterTransition
-EnterTransition
to be applied when thevisible
becomes true. Types ofEnterTransition
are listed here.exitTransition
-ExitTransition
to be applied when thevisible
becomes false. Types ofExitTransition
are listed here.
Box {
// Some other composables here
// This Box is a conatiner for anchoring
Box {
Image(
painter = painterResource(R.drawable.some_image),
contentDescription = "Some image"
)
Tooltip(
anchorEdge = AnchorEdge.Top,
) {
Text("This is my image!")
}
}
}
When Tooltip
is being displayed as a popup, an anchor and Tooltip
should be put altogether inside one composable.
fun Tooltip(
anchorEdge: AnchorEdge,
modifier: Modifier = Modifier,
tooltipStyle: TooltipStyle = rememberTooltipStyle(),
tipPosition: EdgePosition = remember { EdgePosition() },
anchorPosition: EdgePosition = remember { EdgePosition() },
margin: Dp = 8.dp,
onDismissRequest: (() -> Unit)? = null,
properties: PopupProperties = remember { PopupProperties() },
content: @Composable RowScope.() -> Unit
)
onDismissRequest
- Executes when the user clicks outside of the tooltip.properties
-PopupProperties
for further customization of this tooltip's behavior.
Other parameteres are same as for ConstraintLayout.
There is also an another version of supporting transition.