Josh Pollock
03/18/2024, 4:45 PMJosh Pollock
03/18/2024, 4:45 PMclass MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
ConstraintLayoutContent()
}
}
}
@Composable
fun Circle(size: Dp, color: Color, modifier: Modifier = Modifier) {
Box(
modifier = Modifier.size(size).clip(CircleShape).background(color).then(modifier)
)
}
@Composable
fun ConstraintLayoutContent() {
ConstraintLayout {
val (mercury, label) = createRefs()
val mod = Modifier.constrainAs(mercury) {}
Row(
horizontalArrangement = Arrangement
.spacedBy(space = 50.dp),
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(10.dp)
) {
Circle(size = 15.dp * 2, color = Color(0xFFEBE3CF), modifier = mod)
Circle(size = 36.dp * 2, color = Color(0xFFDC933C))
Circle(size = 38.dp * 2, color = Color(0xFF179DD7))
Circle(size = 21.dp * 2, color = Color(0xFFF1CF8E))
}
Text(
"Mercury",
Modifier.constrainAs(label) {
centerHorizontallyTo(mercury)
}
)
createVerticalChain(label, mercury, chainStyle = ChainStyle.Spread)
}
}
Josh Pollock
03/18/2024, 4:46 PMcenterHorizontallyTo
, then the text is placed in the correct vertical position, but I think it’s always left-aligned to the screenJosh Pollock
03/18/2024, 4:48 PMrnett
03/18/2024, 6:09 PMrnett
03/18/2024, 6:10 PMJosh Pollock
03/18/2024, 6:10 PMJosh Pollock
03/18/2024, 6:11 PMJosh Pollock
03/18/2024, 6:11 PM.weight()
do? Is that flex spacing?rnett
03/18/2024, 6:12 PMrnett
03/18/2024, 6:12 PMrnett
03/18/2024, 6:17 PMJosh Pollock
03/18/2024, 6:17 PMJosh Pollock
03/18/2024, 6:18 PMStylianos Gakis
03/19/2024, 10:55 PMStylianos Gakis
03/19/2024, 10:55 PM@Preview
@Composable
private fun PreviewTest() {
Row(
modifier = Modifier
.fillMaxWidth()
.heightIn(350.dp),
horizontalArrangement = Arrangement.SpaceEvenly,
verticalAlignment = Alignment.CenterVertically,
) {
Planet(text = "Mercury", planetRadius = 35.dp, color = Color(0xFFCCCA9D))
Planet(text = null, planetRadius = 70.dp, color = Color(0xFFD6A101))
Planet(text = "Uranus", planetRadius = 80.dp, color = Color(0xFF54B6FF))
Planet(text = null, planetRadius = 40.dp, color = Color(0xFFF7CD7A))
}
}
@Composable
fun Planet(text: String?, color: androidx.compose.ui.graphics.Color, planetRadius: Dp, modifier: Modifier = Modifier) {
Box(modifier) {
Box(
modifier = modifier
.size(planetRadius)
.clip(CircleShape)
.background(color = color),
)
if (text != null) {
BasicText(
text = text,
modifier = Modifier
.align(Alignment.TopCenter)
.size(0.dp)
.wrapContentSize(align = Alignment.BottomCenter, unbounded = true)
.offset(y = -10.dp),
)
}
}
}
Stylianos Gakis
03/19/2024, 10:55 PM