🚀 Socket Launch Week 🚀 Day 5: Introducing Socket Fix.Learn More

com.github.skgmn:composetooltip

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

com.github.skgmn:composetooltip

Tooltip library for Jetpack Compose

0.2.0
Version published
Maintainers
1

Sample app screenshot

Setup

implementation "com.github.skgmn:composetooltip:0.2.0"

Tooltip method

Tooltip can be either used inside ConstraintLayout or displayed as a popup.

ConstraintLayout

Basic example

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!")
    }
}

Method signatures

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 nearby
  • anchorEdge - Can be either of AnchorEdge.Start, AnchorEdge.Top, AnchorEdge.End, or AnchorEdge.Bottom
  • tooltipStyle - Style for tooltip. Can be created by rememberTooltipStyle
  • tipPosition - Tip position relative to balloon
  • anchorPosition - Position on the anchor's edge where the tip points out.
  • margin - Margin between tip and anchor
  • content - Content inside balloon. Typically Text.

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 the visible becomes true. Types of EnterTransition are listed here.
  • exitTransition - ExitTransition to be applied when the visible becomes false. Types of ExitTransition are listed here.

Popup

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.

Method signatures

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.

FAQs

Package last updated on 21 Sep 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts