如何從修改器中獲取資料以將其傳遞給畫家。在獲取視圖的寬度(以像素為單位)后,我想為影像構建一個地址。我該怎么做?
Image(
contentDescription = null,
modifier = Modifier
.fillMaxSize()
.onGloballyPositioned { layoutCoordinates ->
layoutCoordinates.size.width <--- get width in px
},
painter = rememberImagePainter(
data = "https://example.com/width_in_px/image.jpg", <--- pass width in px
builder = {
size(OriginalSize)
},
)
)
uj5u.com熱心網友回復:
在 Compose 中,您可以使用狀態變數傳遞任何資料。在我的示例中,我使用 aBox來測量大小,因此只有在知道寬度時才能將影像添加到視圖樹。此外,我使用 value setter 可變狀態語法來允許智能轉換。
val (width, setWidth) = remember { mutableStateOf<Int?>(null) }
Box(
Modifier
.fillMaxSize()
.onSizeChanged { size ->
setWidth(size.width)
}
) {
if (width != null) {
Image(
contentDescription = null,
painter = rememberImagePainter(
data = "https://example.com/${width}/image.jpg",
builder = {
size(OriginalSize)
},
),
modifier = Modifier
.matchParentSize()
)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/427890.html
標籤:安卓 图片 android-jetpack-compose
上一篇:如何在Windows表單(C#)中創建帶有圖片框的陣列
下一篇:Jest以什么順序運行測驗?
