Skip to content

Instantly share code, notes, and snippets.

@HarryTylenol
Created October 16, 2021 02:10
Show Gist options
  • Save HarryTylenol/6d05fe415bb66f099ec49ff1895e8443 to your computer and use it in GitHub Desktop.
Save HarryTylenol/6d05fe415bb66f099ec49ff1895e8443 to your computer and use it in GitHub Desktop.
Compose ConstraintLayout Extensions
@Composable
fun ConstraintLayoutScope.t2t(
ref: ConstrainedLayoutReference? = null,
margin: Dp = 0.dp
): Constraint = {
val reference = ref ?: parent
top.linkTo(reference.top, margin)
}
@Composable
fun ConstraintLayoutScope.b2b(
ref: ConstrainedLayoutReference? = null,
margin: Dp = 0.dp
): Constraint = {
val reference = ref ?: parent
bottom.linkTo(reference.bottom, margin)
}
@Composable
fun ConstraintLayoutScope.s2s(
ref: ConstrainedLayoutReference? = null,
margin: Dp = 0.dp
): Constraint = {
val reference = ref ?: parent
start.linkTo(reference.start, margin)
}
@Composable
fun ConstraintLayoutScope.e2e(
ref: ConstrainedLayoutReference? = null,
margin: Dp = 0.dp
): Constraint = {
val reference = ref ?: parent
end.linkTo(reference.end, margin)
}
@Composable
fun ConstraintLayoutScope.match(
ref: ConstrainedLayoutReference? = null,
margin: Dp = 0.dp
): Constraint = {
val reference = ref ?: parent
end.linkTo(reference.end, margin)
start.linkTo(reference.start, margin)
}
@Composable
fun ConstraintLayoutScope.t2b(
ref: ConstrainedLayoutReference? = null,
margin: Dp = 0.dp
): Constraint = {
val reference = ref ?: parent
top.linkTo(reference.bottom, margin)
}
@Composable
fun ConstraintLayoutScope.b2t(
ref: ConstrainedLayoutReference? = null,
margin: Dp = 0.dp
): Constraint = {
val reference = ref ?: parent
bottom.linkTo(reference.top, margin)
}
@Composable
fun ConstraintLayoutScope.s2e(
ref: ConstrainedLayoutReference? = null,
margin: Dp = 0.dp
): Constraint = {
val reference = ref ?: parent
start.linkTo(reference.end, margin)
}
@Composable
fun ConstraintLayoutScope.e2s(
ref: ConstrainedLayoutReference? = null,
margin: Dp = 0.dp
): Constraint = {
val reference = ref ?: parent
end.linkTo(reference.start, margin)
}
operator fun (Constraint).plus(constraint: Constraint): ConstrainScope.() -> Unit {
val target = this
return {
target()
constraint()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment