From b1f20b51daac81ccfc8990a3b9573572fa795fd1 Mon Sep 17 00:00:00 2001 From: Avently <7953703+avently@users.noreply.github.com> Date: Mon, 17 Oct 2022 14:04:19 +0300 Subject: [PATCH] ImageView width limitation for portrait images --- .../simplex/app/views/chat/item/CIImageView.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIImageView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIImageView.kt index f30719be87..f4aa4198ab 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIImageView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIImageView.kt @@ -18,8 +18,9 @@ import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.graphics.painter.BitmapPainter import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.* import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.core.content.FileProvider import chat.simplex.app.BuildConfig @@ -93,15 +94,22 @@ fun CIImageView( } } + @Composable + fun imageViewFullWidth(): Dp { + val approximatePadding = 100.dp + return with(LocalDensity.current) { minOf(1000.dp, LocalView.current.width.toDp() - approximatePadding) } + } + @Composable fun imageView(imageBitmap: Bitmap, onClick: () -> Unit) { + val fullWidth = imageViewFullWidth() Image( imageBitmap.asImageBitmap(), contentDescription = stringResource(R.string.image_descr), // .width(1000.dp) is a hack for image to increase IntrinsicSize of FramedItemView // if text is short and take all available width if text is long modifier = Modifier - .width(1000.dp) + .width(if (imageBitmap.width < imageBitmap.height) fullWidth * 0.75f else fullWidth) .combinedClickable( onLongClick = { showMenu.value = true }, onClick = onClick @@ -112,13 +120,14 @@ fun CIImageView( @Composable fun imageView(painter: Painter, onClick: () -> Unit) { + val fullWidth = imageViewFullWidth() Image( painter, contentDescription = stringResource(R.string.image_descr), // .width(1000.dp) is a hack for image to increase IntrinsicSize of FramedItemView // if text is short and take all available width if text is long modifier = Modifier - .width(1000.dp) + .width(if (painter.intrinsicSize.width < painter.intrinsicSize.height) fullWidth * 0.75f else fullWidth) .combinedClickable( onLongClick = { showMenu.value = true }, onClick = onClick