LazyColumn и ограничение в JetPack ComposeAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 LazyColumn и ограничение в JetPack Compose

Сообщение Anonymous »

Я настраиваю дизайн на основе списка, используя Jetpack Compose + ограничение, но столкнулся с некоторой проблемой со ссылкой на ограничение, поскольку она не будет работать должным образом, когда она связана с родительским элементом.
Вот мой код

Код: Выделить всё

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun ProductCard(product:ProductModel){
ElevatedCard(
onClick = { },
modifier = Modifier
.padding(start = 15.dp, end = 15.dp, top = 10.dp, bottom = 10.dp)
.fillMaxWidth(),
colors = CardDefaults.cardColors(
containerColor = Color.White,
)
) {
ConstraintLayout{
val (productImage,productName,productCategory,
productPrice,ratingPrice) = createRefs()

AsyncImage(
model = ImageRequest.Builder(LocalContext.current)
.data(product.productImage)
.crossfade(true)
.build(),
contentDescription = null,
placeholder = painterResource(id = R.drawable.user),
contentScale = ContentScale.Crop,
modifier = Modifier
.constrainAs(productImage) {
start.linkTo(parent.start, margin = 10.dp)
top.linkTo(parent.top, margin = 15.dp)
end.linkTo(productName.start)
bottom.linkTo(parent.bottom)
}
.width(72.dp)
.height(72.dp)
)

Text(
modifier = Modifier
.constrainAs(productName) {
top.linkTo(productImage.top)
start.linkTo(productImage.end, margin = 10.dp)
end.linkTo(parent.end,margin = 10.dp)
width = Dimension.wrapContent
},
text = product.productName,
fontFamily = notoSansFontFamily,
fontWeight = FontWeight.Bold,
fontSize = 16.sp,
)

Text(
modifier = Modifier
.constrainAs(productCategory) {
top.linkTo(productName.bottom, margin = 5.dp)
start.linkTo(productName.start)
width = Dimension.wrapContent
},
text = product.productCategory,
fontFamily = notoSansFontFamily,
fontWeight = FontWeight.Medium,
fontSize = 15.sp,
)

Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.constrainAs(ratingPrice){
top.linkTo(productCategory.bottom, margin = 5.dp)
start.linkTo(productName.start)
end.linkTo(parent.end)
}
.background(Color.Blue)
) {
Text(
text = product.productPrice,
fontFamily = notoSansFontFamily,
fontWeight = FontWeight.Bold,
fontSize = 14.sp,
color = Color.White,
textAlign = TextAlign.Start
)

Text(
text = "Rating : ${product.productRating}",
fontFamily = notoSansFontFamily,
fontWeight = FontWeight.Normal,
fontSize = 12.sp,
color = Color.Yellow,
textAlign = TextAlign.End,
modifier = Modifier.background(Color.Red)
)
}
}
}
}
Результат
Изображение

Как вы видите на изображении, я хочу, чтобы элементы внутри Row Composer были выровнены в начале и в конце. Я также установил ограничение для начала и конца, но размеры не будут работать должным образом.
Если я изменю код ниже

Код: Выделить всё

  Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.constrainAs(ratingPrice){
top.linkTo(productCategory.bottom, margin = 5.dp)
start.linkTo(productName.start)
end.linkTo(parent.end)
width = Dimension.fillToConstraints
}
.background(Color.Blue)
) {
Text(
text = product.productPrice,
fontFamily = notoSansFontFamily,
fontWeight = FontWeight.Bold,
fontSize = 14.sp,
color = Color.White
)

Text(
text = "Rating : ${product.productRating}",
fontFamily = notoSansFontFamily,
fontWeight = FontWeight.Normal,
fontSize = 12.sp,
color = Color.Yellow,
modifier = Modifier.background(Color.Red)
)
}
Он ведет себя следующим образом
Изображение

Можете ли вы сказать мне возможную причину этого?

Подробнее здесь: https://stackoverflow.com/questions/789 ... ck-compose
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»