带有 Glance 的 Android Widget 为低于 31 的 SDK 提供了便利

Posted

技术标签:

【中文标题】带有 Glance 的 Android Widget 为低于 31 的 SDK 提供了便利【英文标题】:Android Widget with Glance make around corners for SDK lower than 31 【发布时间】:2022-01-19 10:29:18 【问题描述】:

Announcing Jetpack Glance Alpha for app widgets。但是圆角不适用于低于 31 (android 12) 的 SDK。 理想情况下,您希望以编程方式更改带圆角的背景颜色。

有没有人想办法解决这个问题?

【问题讨论】:

【参考方案1】:

我遇到了这个问题。而且,我解决了背景可绘制的问题。为您的根提供背景可绘制对象。

MyWidgetClass.kt

    @Composable
    override fun Content() 
        Column(
            modifier = GlanceModifier
                .width(170.dp).height(130.dp)
                .background(ImageProvider(R.drawable.background_widget))
                .padding(8.dp)
        ) 
            //...
        
    

background_widget.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFFFF" />

    <corners android:radius="10dp" />
</shape>

【讨论】:

这是最好的解决方案。这个版本的圆角与你在 sdk 31+ 上得到的唯一不同的是,为半径之外的子视图剪裁【参考方案2】:

这是一种添加圆角的简单方法,但它适用于 Android S +。

@Composable
override fun Content() 
    Column(
        modifier = GlanceModifier
            .width(170.dp).height(130.dp)
            .background(color = Color.Gray)
            .cornerRadius(8.dp)
    ) 
        //...
    

【讨论】:

以上是关于带有 Glance 的 Android Widget 为低于 31 的 SDK 提供了便利的主要内容,如果未能解决你的问题,请参考以下文章

新版Glance发布,更好用的Android数据库调试助手

新版Glance发布,更好用的Android数据库调试助手

新版Glance发布,更好用的Android数据库调试助手

Jetpack 新组件,Glance听过吗?

Jetpack Glance Alpha 版现已推出

Twitter Widge脚本