OnSizeChangedSample
@Sampled
@Composable
fun OnSizeChangedSample(name: String) {
// Use onSizeChanged() for diagnostics. Use Layout or SubcomposeLayout if you want
// to use the size of one component to affect the size of another component.
Text(
"Hello $name",
Modifier.onSizeChanged { size -> println("The size of the Text in pixels is $size") },
)
}
OnPlaced
@Sampled
@Composable
fun OnPlaced() {
LayoutAwareModifierNodeSample
@Sampled
@Composable
fun LayoutAwareModifierNodeSample() {
class SizeLoggerNode(var id: String) : LayoutAwareModifierNode, Modifier.Node() {
override fun onRemeasured(size: IntSize) {
println("The size of $id was $size")
}
}
data class LogSizeElement(val id: String) : ModifierNodeElement<SizeLoggerNode>() {
override fun create(): SizeLoggerNode = SizeLoggerNode(id)
override fun update(node: SizeLoggerNode) {
node.id = id
}
override fun InspectorInfo.inspectableProperties() {
name = "logSize"
properties["id"] = id
}
}