You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Glance Widget中图片圆角设置不生效问题求助

Jetpack Glance Widget图片圆角不生效的排查与解决建议

针对你在Glance Widget中设置图片圆角无效的问题,可从以下几个方向排查:

1. 确认cornerRadius参数调用的正确性

你的扩展函数中,Android 12+使用系统资源IDandroid.R.dimen.system_app_widget_inner_radius,低版本使用8.dp,虽然Glance的cornerRadius支持两种重载,但建议先替换为固定Dp值测试,验证是否是系统 dimens 取值异常导致:

fun GlanceModifier.imageCornerRadius(): GlanceModifier {
    return this.cornerRadius(if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) 12.dp else 8.dp)
}

2. 调整Modifier的执行顺序

Glance Modifier的顺序会影响最终渲染效果,clickable可能会覆盖前置的圆角设置,尝试将圆角修饰符移到clickable之后:

modifier = GlanceModifier
    .size(70.dp)
    .clickable(
        actionRunCallback<StartAppCallback>(
            parameters = actionParametersOf(
                StartAppCallback.WIDGET_TYPE to type.value,
                StartAppCallback.ID to model.id
            )
        )
    )
    .imageCornerRadius()

3. 结合clip修饰符实现裁剪

部分场景下cornerRadius无法生效,可改用clip配合圆角形状实现:

fun GlanceModifier.imageCornerRadius(): GlanceModifier {
    val radius = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
        Resources.getSystem().getDimension(android.R.dimen.system_app_widget_inner_radius).dp
    } else {
        8.dp
    }
    return this.clip(shape = RoundedCornerShape(radius))
}

4. 验证Bitmap的透明通道

如果使用的是无透明通道的图片格式(如JPG),圆角裁剪后可能因无透明区域而看不到效果。可将Bitmap转换为带透明通道的格式,或给图片添加背景色后再设置圆角。

5. 升级Glance依赖版本

旧版Glance存在部分修饰符的兼容性问题,建议升级到最新稳定版(如androidx.glance:glance-appwidget:1.0.0及以上)后重试。

内容的提问来源于stack exchange,提问作者Subfly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:35:15