Vince Rickey
05/03/2021, 3:12 PMIntrinsicSize.Min
incorrectly or if I misunderstood?Vince Rickey
05/03/2021, 3:12 PM@Composable
fun SampleHeightSyncedRow() {
Row(
modifier = Modifier
.height(IntrinsicSize.Min) // INTRINSIC SIZE SET HERE ON PARENT ROW
.background(Color.Cyan),
horizontalArrangement = Arrangement.spacedBy(10f)
) {
Text(
modifier = Modifier
.weight(1f)
.padding(start = 8.dp, top = 8.dp, bottom = 8.dp)
.background(Color.Yellow),
text = stringResource(id = R.string.sample_content)
)
Image(
modifier = Modifier
.weight(2f)
.padding(end = 8.dp, top = 8.dp, bottom = 8.dp),
painter = painterResource(id = R.drawable.apple_store),
contentDescription = "Customers trying out new iPads at Apple Store."
)
}
}
Kirill Grouchnikov
05/03/2021, 3:20 PMverticalAlignment=Alignment.Bottom
on your row?Kirill Grouchnikov
05/03/2021, 3:21 PMVince Rickey
05/03/2021, 3:40 PMKirill Grouchnikov
05/03/2021, 3:42 PMKirill Grouchnikov
05/03/2021, 3:43 PMVince Rickey
05/03/2021, 3:44 PMIt also uses a Row with a few children. I'm wondering where I am going wrong.sizes its children being forced to be as tall as their minimum intrinsic height. As it's recursive, it'll queryheight(IntrinsicSize.Min)
and its childrenRow
.minIntrinsicHeight
Kirill Grouchnikov
05/03/2021, 3:46 PMVince Rickey
05/03/2021, 3:46 PMVince Rickey
05/03/2021, 3:46 PMFrancesc
05/03/2021, 3:54 PMFrancesc
05/03/2021, 3:56 PMLayout
you would measure the image based on your incoming constraints and aspect ratio and then set the layout height to the height of the image, then the text will clip as it's being constrained in heightVince Rickey
05/03/2021, 4:01 PMFrancesc
05/03/2021, 4:16 PMLayout
composable and then you would measure and position the children yourselfVince Rickey
05/03/2021, 5:09 PMFrancesc
05/03/2021, 5:16 PM@Composable
fun TextWithImage(
modifier: Modifier = Modifier,
content: @Composable () -> Unit,
) {
Layout(
content = content,
modifier = modifier,
) { measurables, constraints ->
val text = measurables[0]
val image = measurables[1]
val imageConstraints = constraints.copy(
minWidth = 0,
minHeight = 0,
maxWidth = (constraints.maxWidth * 2f / 3f).toInt(),
)
val imagePlaceable = image.measure(imageConstraints)
val textWidth = constraints.maxWidth / 3f
val textConstraints = Constraints.fixed(
textWidth.toInt(),
imagePlaceable.height
)
val textPlaceable = text.measure(textConstraints)
layout(
constraints.maxWidth,
imagePlaceable.height
) {
textPlaceable.place(0, 0)
imagePlaceable.place(textWidth.toInt(), 0)
}
}
}
@Preview
@Composable
fun TextWithImagePreview() {
AppTheme {
Surface(modifier = Modifier.width(320.dp)) {
TextWithImage {
Text(
modifier = Modifier.fillMaxWidth(),
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus eleifend tempus laoreet. Fusce imperdiet dolor vitae mollis finibus. Sed faucibus, lorem ac vehicula molestie, diam mi euismod dui, eget commodo massa justo non enim. Cras eget iaculis ante. Cras et finibus lorem, sed varius turpis. Vestibulum in ante est. Integer sagittis, magna eu pretium sollicitudin, enim metus tristique dui, ac iaculis nulla nisl eu sem. Ut non turpis enim. Phasellus et nulla turpis. Pellentesque ligula lorem, lobortis vitae ultrices eget, consectetur a purus. Etiam pharetra orci sollicitudin nibh gravida consectetur."
)
Image(
modifier = Modifier.fillMaxWidth(),
painter = painterResource(id = R.drawable.sample), contentDescription = null
)
}
}
}
}
Vince Rickey
05/03/2021, 5:29 PM