IllegalArgumentException:maxHeight473必须> = minHeight747

问题描述

我正在尝试从Jetpack Compose中获得一个示例,并在下面得到此错误,由于此代码之前没有起作用,所以我没有做任何更改,唯一更改的是版本从 dev15 alpha-01 ,然后发生了

 java.lang.IllegalArgumentException: maxHeight(473) must be >= minHeight(747)
        at androidx.compose.ui.unit.Constraints.copy-msEJaDk(Constraints.kt:158)
        at androidx.compose.ui.unit.Constraints.copy-msEJaDk$default(Constraints.kt:146)
        at androidx.compose.ui.draw.PainterModifier.modifyConstraints-BRTryo0(PainterModifier.kt:224)
        at androidx.compose.ui.draw.PainterModifier.measure-3Jkh9V0(PainterModifier.kt:91)
        at androidx.compose.ui.node.ModifiedLayoutNode.performMeasure-BRTryo0(ModifiedLayoutNode.kt:36)
        at androidx.compose.ui.node.LayoutNodeWrapper.measure-BRTryo0(LayoutNodeWrapper.kt:120)
        at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performMeasure-BRTryo0(DelegatingLayoutNodeWrapper.kt:106)
        at androidx.compose.ui.node.LayerWrapper.performMeasure-BRTryo0(LayerWrapper.kt:70)
        at androidx.compose.ui.node.LayoutNodeWrapper.measure-BRTryo0(LayoutNodeWrapper.kt:120)
        at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performMeasure-BRTryo0(DelegatingLayoutNodeWrapper.kt:106)
        at androidx.compose.ui.node.LayerWrapper.performMeasure-BRTryo0(LayerWrapper.kt:70)
        at androidx.compose.ui.node.LayoutNodeWrapper.measure-BRTryo0(LayoutNodeWrapper.kt:120)
        at androidx.compose.foundation.layout.FillModifier.measure-3Jkh9V0(LayoutSize.kt:433)
        at androidx.compose.ui.node.ModifiedLayoutNode.performMeasure-BRTryo0(ModifiedLayoutNode.kt:36)
        at androidx.compose.ui.node.LayoutNodeWrapper.measure-BRTryo0(LayoutNodeWrapper.kt:120)
        at androidx.compose.foundation.layout.SizeModifier.measure-3Jkh9V0(LayoutSize.kt:507)
        at androidx.compose.ui.node.ModifiedLayoutNode.performMeasure-BRTryo0(ModifiedLayoutNode.kt:36)
        at androidx.compose.ui.node.LayoutNodeWrapper.measure-BRTryo0(LayoutNodeWrapper.kt:120)
        at androidx.compose.ui.node.OuterMeasurablePlaceable$remeasure$2.invoke(OuterMeasurablePlaceable.kt:90)
        at androidx.compose.ui.node.OuterMeasurablePlaceable$remeasure$2.invoke(OuterMeasurablePlaceable.kt)
        at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:132)
        at androidx.compose.ui.platform.AndroidComposeView.observeMeasureModelReads(AndroidComposeView.kt:425)
        at androidx.compose.ui.node.OuterMeasurablePlaceable.remeasure-BRTryo0(OuterMeasurablePlaceable.kt:89)
        at androidx.compose.ui.node.OuterMeasurablePlaceable.measure-BRTryo0(OuterMeasurablePlaceable.kt:62)
        at androidx.compose.ui.node.LayoutNode.measure-BRTryo0(LayoutNode.kt:1095)
        at androidx.compose.foundation.layout.RowColumnImplKt$rowColumnMeasureBlocks$1.invoke(RowColumnImpl.kt:90)
        at androidx.compose.foundation.layout.RowColumnImplKt$rowColumnMeasureBlocks$1.invoke(RowColumnImpl.kt)
        at androidx.compose.ui.LayoutKt$measureBlocksOf$1.measure-2MWCACw(Layout.kt:146)
        at androidx.compose.ui.node.InnerPlaceable.performMeasure-BRTryo0(InnerPlaceable.kt:48)
        at androidx.compose.ui.node.LayoutNodeWrapper.measure-BRTryo0(LayoutNodeWrapper.kt:120)
        at androidx.compose.foundation.layout.PaddingModifier.measure-3Jkh9V0(LayoutPadding.kt:169)
        at androidx.compose.ui.node.ModifiedLayoutNode.performMeasure-BRTryo0(ModifiedLayoutNode.kt:36)
        at androidx.compose.ui.node.LayoutNodeWrapper.measure-BRTryo0(LayoutNodeWrapper.kt:120)
        at androidx.compose.ui.node.OuterMeasurablePlaceable$remeasure$2.invoke(OuterMeasurablePlaceable.kt:90)
        at androidx.compose.ui.node.OuterMeasurablePlaceable$remeasure$2.invoke(OuterMeasurablePlaceable.kt)
        at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:132)
        at androidx.compose.ui.platform.AndroidComposeView.observeMeasureModelReads(AndroidComposeView.kt:425)
        at androidx.compose.ui.node.OuterMeasurablePlaceable.remeasure-BRTryo0(OuterMeasurablePlaceable.kt:89)
        at androidx.compose.ui.node.OuterMeasurablePlaceable.measure-BRTryo0(OuterMeasurablePlaceable.kt:62)
        at androidx.compose.ui.node.LayoutNode.measure-BRTryo0(LayoutNode.kt:1095)
        at androidx.compose.foundation.lazy.LazyForState.measure-mw7JCkE(LazyForState.kt:322)
        at androidx.compose.foundation.lazy.

我的代码是后续代码

import android.os.Bundle
import androidx.annotation.DrawableRes
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.Image
import androidx.compose.foundation.Text
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumnFor
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.setContent
import androidx.compose.ui.res.imageResource
import androidx.compose.ui.unit.dp

import androidx.ui.tooling.preview.Preview
import com.example.jetexample.ui.typography

val recipeList = listof<Recipe>(Recipe(R.drawable.header,"Test",listof("Azucar","Tomate","lasagna")),Recipe(R.drawable.header,"lasagna")))


class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            RecipeList(recipeList)
        }
    }
}

@Composable
fun RecipeCard(recipe: Recipe) {
    val image = imageResource(R.drawable.header)
    Column(modifier = Modifier.padding(16.dp)) {
        val imageModifier = Modifier
                .preferredHeightIn(maxHeight = 180.dp)
                .fillMaxWidth()
                .clip(shape = RoundedCornerShape(8.dp))

        Image(image,modifier= imageModifier,contentScale = ContentScale.Crop)
        Spacer(Modifier.preferredHeight(16.dp))
        Text(recipe.title,style = typography.h6)
        for(ingredient in recipe.ingredients){
            Text(ingredient,style = typography.body2)
        }

    }
}

@Composable
fun RecipeList(recipeList:List<Recipe>){
    LazyColumnFor(recipeList) { item ->
        RecipeCard(recipe = item)
    }
}

@Preview(showBackground = true)
@Composable
fun RecipePreview(){
    RecipeList(recipeList)
}

data class Recipe(
        @DrawableRes val imageResource: Int,val title: String,val ingredients: List<String>
)

我认为问题可能出在导入的dp单位中,我真的不知道为什么会发生这种情况

解决方法

已通过替换固定

commit bed4....80d3 (HEAD -> oldbranch)
commit bed4....80d3 (HEAD -> newbranch,oldbranch)

使用

        .preferredHeightIn(maxHeight = 180.dp)