gpt4 book ai didi

android - 在 Jetpack Compose 中以编程方式获取和设置元素的位置

转载 作者:行者123 更新时间:2023-12-04 23:53:07 26 4
gpt4 key购买 nike

是否可以在窗口上以编程方式获取和设置元素的位置/边界?比方说,我们有简单的 Text并想移动它50dpy轴。

Text(text = "Hello", modifier = Modifier.padding(8.dp).fillMaxWidth())

最佳答案

如果我正确解释了您的问题,那么您想将 Text 50dp 移到
y 轴和文本以及文本上方的 50dp 空间应该是可点击的。
这是创建小型自定义组合的一种解决方案:

@Composable
fun TextWithPos(content: String, modifier: Modifier, x: Int, y: Int, clickFun: () -> Unit = {}) {

Text(text = content, modifier = modifier
.defaultMinSizeConstraints(minHeight = y.dp)
.clickable(onClick = clickFun)
.padding(top = y.dp))

}
此 Composable 使用 minHeigth 设置文本一些 dp ( minWidth 未使用
这里),然后设置 clickable ,然后是 padding有一些dp。其实编
不再区分边距和填充,它只是一些空间。
Compose 按顺序处理修饰符,因此 clickable覆盖空间(填充)
和里面的文字 Text .如果你搬家 clickable低于 padding然后
可点击区域只覆盖 Text里面的文字.
这是一个带有可点击操作的预览,以显示可点击区域。因为
函数设置一个修饰符并将其交给自定义可组合这些
修饰符优先于自定义组合中的修饰符集。
@Preview(showBackground = true)
@Composable
fun TextPosPreview() {
PlaygroundTheme {
Column() {
TextWithPos(content = "Hello", modifier = Modifier
.padding(start = 16.dp, end=16.dp), x = 0, y = 50) {
counter++
}

var counter by remember { mutableStateOf(1) }
Text(text = counter.toString(), modifier = Modifier
.padding(16.dp))

}
}
}

关于android - 在 Jetpack Compose 中以编程方式获取和设置元素的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63052785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com