mikepenz/Android-Iconics

Compose Image is ignoring `size` modifier

开放

#638 创建于 2023年10月16日

 (1 条评论) (0 个反应) (0 位负责人)Kotlin (613 个派生)batch import
help wanted

仓库指标

星标
 (5,277 个星标)
PR 合并指标
 (30 天内没有已合并 PR)

描述

About this issue

For the following composable

@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

贡献者指南