fix: fix message bubble
This commit is contained in:
@@ -80,7 +80,8 @@ fun TelegramStyleMessageContent(
|
|||||||
textContent: @Composable () -> Unit,
|
textContent: @Composable () -> Unit,
|
||||||
timeContent: @Composable () -> Unit,
|
timeContent: @Composable () -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
spacing: Int = 10
|
spacing: Int = 10,
|
||||||
|
fillWidth: Boolean = false // 🔥 Если true - время всегда справа на всю ширину контейнера
|
||||||
) {
|
) {
|
||||||
val density = LocalDensity.current
|
val density = LocalDensity.current
|
||||||
val spacingPx = with(density) { spacing.dp.roundToPx() }
|
val spacingPx = with(density) { spacing.dp.roundToPx() }
|
||||||
@@ -115,7 +116,14 @@ fun TelegramStyleMessageContent(
|
|||||||
|
|
||||||
// Определяем layout
|
// Определяем layout
|
||||||
val (width, height, timeX, timeY) =
|
val (width, height, timeX, timeY) =
|
||||||
if (!textWraps && totalSingleLineWidth <= constraints.maxWidth) {
|
if (fillWidth) {
|
||||||
|
// 🔥 Для caption - занимаем всю доступную ширину, время справа на одной линии
|
||||||
|
val w = constraints.maxWidth
|
||||||
|
val h = maxOf(textPlaceable.height, timePlaceable.height)
|
||||||
|
val tX = w - timeWidth // Время справа
|
||||||
|
val tY = h - timePlaceable.height // Время внизу строки (выровнено по baseline)
|
||||||
|
LayoutResult(w, h, tX, tY)
|
||||||
|
} else if (!textWraps && totalSingleLineWidth <= constraints.maxWidth) {
|
||||||
// Текст и время на одной строке
|
// Текст и время на одной строке
|
||||||
val w = totalSingleLineWidth
|
val w = totalSingleLineWidth
|
||||||
val h = maxOf(textPlaceable.height, timePlaceable.height)
|
val h = maxOf(textPlaceable.height, timePlaceable.height)
|
||||||
@@ -584,6 +592,7 @@ fun MessageBubble(
|
|||||||
Box(
|
Box(
|
||||||
modifier =
|
modifier =
|
||||||
Modifier
|
Modifier
|
||||||
|
.fillMaxWidth() // 🔥 Растягиваем на ширину фото для правильного позиционирования времени
|
||||||
.background(bubbleColor)
|
.background(bubbleColor)
|
||||||
.padding(
|
.padding(
|
||||||
start = captionPaddingStart,
|
start = captionPaddingStart,
|
||||||
@@ -627,7 +636,8 @@ fun MessageBubble(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
spacing = 8
|
spacing = 8,
|
||||||
|
fillWidth = true // 🔥 Время справа на всю ширину фото
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else if (message.attachments.isNotEmpty() && message.text.isNotEmpty()) {
|
} else if (message.attachments.isNotEmpty() && message.text.isNotEmpty()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user