Есть ли какой-либо способ добиться этого Dimension.fillToConstraints поведения без использования ConstraintLayout в jetpack-compose?

#android #kotlin #android-jetpack #android-jetpack-compose #android-jetpack-compose-list

#Android #котлин #android-реактивный ранец #android-реактивный ранец-создать #android-jetpack-compose-list

Вопрос:

Я практикуюсь в compose. У меня есть простой дизайн, который содержит LazyColumn и TextField. Все, что я хочу сделать, это исправить текстовое поле внизу. Проблема в том, что поскольку MessageList() composable не имеет статической высоты, он заполняет весь экран и TextField исчезает. Я исправил это с помощью ConstraintLayout composable и установки MessageList() высоты Dimension.fillToConstraints . Интересно, есть ли какой — нибудь способ добиться этого, используя только Column() not ConstraintLayout .

 Column {
    MessageList(list, state)
    Footer(message) {
      message = it
    }
}

@Composable
fun MessageList(list : List<ChatItem>, state : LazyListState){
    LazyColumn(state = state) {
    .....
    }
}

@Composable
fun Footer(message : String, onChange : (String) -> Unit){
    TextField(value = message, onValueChange = onChange)
}
 

Комментарии:

1. Вы пробовали использовать Spacer( modifier = Modifier .height(height) .fillMaxWidth())

2. Я только что попробовал. Это не помогло. В любом случае, спасибо.

3. Пожалуйста, обновите код тем, что вы пробовали. Не уверен, правильно ли я понимаю, но если высота вида динамическая, она все равно должна прокручиваться в пределах вида, связанного справа? Теперь он перекрывается на нижнем виде. Вид снизу должен быть виден независимо от того, какова высота перекрытия. Вы установили Spacer высоту на высоту нижнего вида?

Ответ №1:

Вы можете использовать что-то вроде:

 val itemsList = (0..60).toList()

Column {
    LazyColumn(modifier = Modifier.weight(1f)){
        items(itemsList) {
            Text("Item is $it")
        }
    }
    Row( verticalAlignment = Alignment.Bottom) {
        Text(text = "Footer row")
    }
}
 

введите описание изображения здесь