当存在省略号时,在 Android Compose 中应用到文本上的阴影会被剪裁

问题描述 投票:0回答:1

使用

Text
应用的
Shadow()
可组合项上的阴影效果看起来很棒,因为它与文本内容的形状对齐。当没有省略号时,这非常有效,允许阴影延伸到
Text
边界之外。但是,当文本太长并且出现省略号时,阴影会在边界内被剪切。我该如何解决这个问题?

无省略号的文字

@Preview(showBackground = true)
@Composable
fun Preview() {
    MyApplicationTheme {
        Box(
            modifier = Modifier.size(100.dp),
            contentAlignment = Alignment.Center
        ) {
            Text(
                text = "Hello ".repeat(1),
                style = MaterialTheme.typography.bodyMedium.copy(
                    shadow = Shadow(
                        Color.Black,
                        blurRadius = 30f
                    )
                ),
                modifier = Modifier
                    .width(100.dp),
                fontSize = 12.sp,
                overflow = TextOverflow.Ellipsis,
                maxLines = 1
            )
        }
    }
}

enter image description here

带有省略号的文本

@Preview(showBackground = true)
@Composable
fun Preview() {
    MyApplicationTheme {
        Box(
            modifier = Modifier.size(100.dp),
            contentAlignment = Alignment.Center
        ) {
            Text(
                text = "Hello ".repeat(20),
                style = MaterialTheme.typography.bodyMedium.copy(
                    shadow = Shadow(
                        Color.Black,
                        blurRadius = 30f
                    )
                ),
                modifier = Modifier
                    .width(100.dp),
                fontSize = 12.sp,
                overflow = TextOverflow.Ellipsis,
                maxLines = 1
            )
        }
    }
}

enter image description here

android kotlin android-jetpack-compose shadow android-compose-textfield
1个回答
0
投票

我认为这没有问题。当您将

blurRadus
设置为较小的值并设置更明显的
color
时,您可以看到正确应用了
Shadow
,甚至适用于椭圆形。然而,这个阴影几乎看不见,因为三个小点的影响很小。

请参阅以下示例:

Text(
    text = "Hello... ".repeat(5),
    style = MaterialTheme.typography.bodyMedium.copy(
        shadow = Shadow(
            Color.Red,
            blurRadius = 3f
        )
    ),
    modifier = Modifier
        .width(100.dp),
    fontSize = 12.sp,
    overflow = TextOverflow.Ellipsis,
    maxLines = 1
)

Preview

当您设置较高的

TextOverflow.Ellipsis
时,您观察到的阴影剪切与
blurRadius
值无关,因为
Shadow
可能不会超出
Text
可组合项的范围。

© www.soinside.com 2019 - 2024. All rights reserved.