You can use like this for fill height and width, as you use coil (io.coil-kt:coil-compose)
.
WrapperBoxImage(
Modifier
.fillMaxSize(),
imgUrl = "your image url.....",
placeholder = R.drawable.ic_default_class_image,
scale = ContentScale.Crop,
contentDescription = "course_card_image"
)
if you need rounded corners just add this .clip(RoundedCornerShape(10.dp))
to modifier of WrapperBoxImage.
Our WrapperBoxImage
Implementation will look like,
const val contentDescription_default = "WrapperBox_Image"
@Composable
fun WrapperBoxImage(
mod: Modifier = Modifier,
imgUrl: String,
placeholder: Int = R.drawable.image_video_placeholder,
scale: ContentScale = ContentScale.Crop,
contentDescription: String,
onClick: () -> Unit = {}
) {
Box(
modifier = mod.clickable { onClick() }
) {
ImageSpec(imgUrl, placeholder, scale = scale, contentDescription = contentDescription)
}
}
@Composable
private
fun ImageSpec(
imgUrl: String,
placeholder: Int = R.drawable.image_video_placeholder,
mod: Modifier = Modifier,
scale: ContentScale = ContentScale.Crop,
contentDescription: String = contentDescription_default
) {
Box(
contentAlignment = Alignment.BottomCenter
) {
val painter = rememberAsyncImagePainter(
ImageRequest.Builder(LocalContext.current).data(data = imgUrl)
.apply(block = fun ImageRequest.Builder.() {
placeholder(placeholder)
scale(Scale.FILL)
}).build()
)
Image(
painter = painter,
contentDescription = contentDescription,
mod.fillMaxSize(),
contentScale = scale
)
}
}