Android-Iconics icon indicating copy to clipboard operation
Android-Iconics copied to clipboard

Compose Image is ignoring `size` modifier

Open Nek-12 opened this issue 2 years ago • 1 comments

About this issue

For the following composable

RIcon
@Composable
fun RIcon(
    icon: IIcon,
    modifier: Modifier = Modifier,
    size: Dp = Size.icon,
    color: Color = Color.Unspecified,
    respectFontBounds: Boolean = false, // needed to align some icons correctly
) {
    Image(
        asset = icon,
        modifier = modifier.requiredSizeIn(maxWidth = size, maxHeight = size),
        alignment = Alignment.Center,
        contentScale = ContentScale.Fit,
        iconicsConfig = IconicsConfig(
            respectFontBounds = respectFontBounds,
            iconBrush = SolidColor(color.takeOrElse { LocalContentColor.current }),
            paddingDp = 1,
        ),
    )
}

When using sizeIn(maxWidth, maxHeight), the modifier is ignored and icons spill outside of the composable bounds.requiredSizeIn fixes the issue but breaks animations & other Material widgets that want to resize the icon composable.
We need a proper solution for sizing icons without using requiredSize.

Why is this and how can this be fixed? Using respectFontBounds = true is not possible because that breaks alignment of icons in the container.

Details

  • [x] Used library version 5.5.0-compose01
  • [x] Other used libraries, potential conflicting libraries - compose-material-3 v1.2.0-alpha09, compose 1.6.0-alpha07

Checklist

Nek-12 avatar Oct 16 '23 09:10 Nek-12

Thank you very much for the report Unfortunately, I currently don't have the capacity to look into this, I'd be more than happy to review a PR for it though

mikepenz avatar Oct 20 '23 08:10 mikepenz