我开始将代码迁移到 Compose,但遇到了 @Preview 问题。例如,当我在modifier.fillMaxWidth()没有默认参数“fraction = 1f”的情况下使用时,我遇到渲染问题
java.lang.NoSuchMethodError: 'androidx.compose.ui.Modifier androidx.compose.foundation.layout.SizeKt.fillMaxWidth$default(androidx.compose.ui.Modifier, java.lang.Float, int, java.lang.Object) '
或使用不带底部参数的填充
.padding(
top = dimensionResource(id = R.dimen._4sdp),
start = dimensionResource(id = R.dimen._16sdp),
end = dimensionResource(id = R.dimen._16sdp)
)
Run Code Online (Sandbox Code Playgroud)
java.lang.NoSuchMethodError: 'androidx.compose.ui.Modifier androidx.compose.foundation.layout.PaddingKt.padding-qDBjuR0$default(androidx.compose.ui.Modifier, androidx.compose.ui.unit.Dp, androidx. compose.ui.unit.Dp、androidx.compose.ui.unit.Dp、androidx.compose.ui.unit.Dp、int、java.lang.Object)'
这是我使用的代码
@Composable
fun Info(
modifier: Modifier = Modifier,
step: String,
stepInfo: String,
) {
Column(modifier = modifier.fillMaxWidth(fraction = 1f)) {
Text(
text = step,
modifier = Modifier
.background(
color = colorResource(id = R.color.color_on_background_variant3),
shape = RoundedCornerShape(90)
)
.size(dimensionResource(id = R.dimen._28sdp))
.padding(dimensionResource(id …Run Code Online (Sandbox Code Playgroud) android android-jetpack-compose android-jetpack-compose-preview android-jetpack-compose-modifier
这个问题以前已经被问过,但以不同的形式,关于一些特定的用例,到目前为止还没有答案。我终于让它工作了,所以我在这里分享这个,但是这不应该被标记为重复,因为前面的所有问题都指定了特定的东西,比如Columnswith scrollable Modifiers, or LazyRows,但这将解决一般的所有问题,我的意思是所有惰性滚动器,甚至希望甚至是可滚动的容器。我将发布答案,这只是我希望与社区分享的一段知识,当然,欢迎任何改进。
android state android-jetpack-compose android-jetpack-compose-list android-jetpack-compose-modifier
我有下面的代码
LazyColumn(
contentPadding = PaddingValues(all = 64.dp),
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
item {
Box(
modifier = Modifier
.width(200.dp)
.height(200.dp)
.border(BorderStroke(2.dp, Color.Green))
) {
Box(modifier = Modifier
.fillMaxSize()
.sizeIn(100.dp, 200.dp)
.requiredWidthIn(150.dp, 180.dp)
.requiredHeightIn(150.dp, 180.dp)
.border(BorderStroke(3.dp, Color.Red))
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果正如预期的那样。
我刚刚将requiredWidthInand替换requiredHeigthIn为requiredSizeIn如下。
LazyColumn(
contentPadding = PaddingValues(all = 64.dp),
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
item {
Box(
modifier = Modifier
.width(200.dp)
.height(200.dp)
.border(BorderStroke(2.dp, Color.Green))
) {
Box(modifier = Modifier
.fillMaxSize()
.sizeIn(100.dp, 200.dp)
.requiredSizeIn(150.dp, 180.dp)
.border(BorderStroke(3.dp, …Run Code Online (Sandbox Code Playgroud) android android-jetpack-compose android-jetpack-compose-modifier