Jetpack Compose: как разместить текст в правой части строки?

Я пытаюсь поместить два текста внутри, один прибит к левому краю, другой к правому. Более того, если левый текст слишком длинный, он не должен перекрывать правый текст, а должен переноситься на новую строку. Проблема в том, что как правый, так и левый текст не являются обязательными. Если, например, нет левого текста, мне нужно, чтобы правый текст располагался в строке у правого края.

Вот пример того, как это должно выглядеть

Вот мой код:

         Row(
                    modifier = Modifier
                        .fillMaxWidth()
                        .padding(top = 4.dp),
                    horizontalArrangement = Arrangement.SpaceBetween,
                    verticalAlignment = Alignment.CenterVertically,
                ) {
                    if (hasLeft()) {
                        Text(
                            modifier = Modifier.weight(1f),
                            text = leftText,                            
                        )
                    }

                    if (hasRight()) {
                        Text(
                            modifier = Modifier.padding(start = 4.dp),
                            text = rightText,                                
                        )
                    }
                }

В итоге, когда нет левого текста, правый текст располагается слева, а мне нужно, чтобы он был справа, как это исправить?

Пожалуйста, помогите мне.

2 ответа

Установите для свойства fill Modifier.weight значение false для левого текста и добавьте пробел, когда левый текст недоступен.

      Row(
    modifier = Modifier
        .fillMaxWidth()
        .padding(top = 4.dp),
    horizontalArrangement = Arrangement.SpaceBetween,
    verticalAlignment = Alignment.CenterVertically,
) {
    if (hasLeft) {
        Text(
            modifier = Modifier.weight(1f, fill = false),
            text = leftText,
        )
    }else {
        Spacer(Modifier.weight(1f))
    }

    if (hasRight) {

        Text(
            modifier = Modifier.padding(start = 4.dp),
            text = rightText
        )
    }
}

Вы ограничиваете себя мыслью, что во всех случаях так и должно быть.Row.

      when {
    hasLeft() && hasRight() -> YourOriginalRow()
    hasLeft() -> `Row/Box with only left text`()
    hasRight() -> `Box with only right text`()
}