Jetpack Compose Glance Widget在API33无法调整大小,API30正常求助
问题描述
我正在使用Jetpack Compose Glance开发Android桌面小组件。在API30真机上,小组件可正常调整大小;但在API33或API32的模拟器中,无法进行大小调整。怀疑是模拟器问题,但Google Chrome的小组件在同款模拟器中却能正常调整大小。
xml/widget_info.xml
<?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:description="@string/app_name" android:initialLayout="@layout/loader" android:minWidth="80dp" android:minHeight="80dp" android:minResizeWidth="40dp" android:minResizeHeight="40dp" android:previewImage="@drawable/widget" android:resizeMode="horizontal|vertical" android:widgetCategory="home_screen" />
xml-v31/widget_info.xml
<?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:previewLayout="@layout/widget_preview" android:targetCellWidth="3" android:targetCellHeight="2" android:description="@string/widget_description"/>
Glance小组件代码
import androidx.compose.runtime.Composable import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.glance.GlanceModifier import androidx.glance.ImageProvider import androidx.glance.LocalContext import androidx.glance.LocalSize import androidx.glance.appwidget.GlanceAppWidget import androidx.glance.appwidget.GlanceAppWidgetReceiver import androidx.glance.appwidget.SizeMode import androidx.glance.appwidget.cornerRadius import androidx.glance.background import androidx.glance.layout.fillMaxSize import androidx.glance.layout.padding import androidx.glance.state.GlanceStateDefinition import androidx.glance.state.PreferencesGlanceStateDefinition class MyWidget : GlanceAppWidget() { override var stateDefinition: GlanceStateDefinition<*> = PreferencesGlanceStateDefinition override val sizeMode: SizeMode = SizeMode.Responsive( setOf(SMALL_SQUARE, HORIZONTAL_RECTANGLE, BIG_SQUARE) ) @Composable override fun Content() { val size = LocalSize.current val context = LocalContext.current MyContent( modifier = GlanceModifier .fillMaxSize() .background(ImageProvider(R.drawable.bg_widget)) .cornerRadius(16.dp) .padding(8.dp) ) } companion object { const val WATER_WIDGET_PREFS_KEY = "WATER_WIDGET_PREFS_KEY" private val SMALL_SQUARE = DpSize(100.dp, 100.dp) private val HORIZONTAL_RECTANGLE = DpSize(250.dp, 100.dp) private val BIG_SQUARE = DpSize(250.dp, 250.dp) } } class MyWidgetReceiver : GlanceAppWidgetReceiver() { override val glanceAppWidget: GlanceAppWidget = MyWidget () }
AndroidManifest.xml
<receiver android:name=".ui.widget.MyWidgetReceiver" android:enabled="@bool/glance_appwidget_available" android:exported="false"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_info" /> </receiver>
截图对比
API33模拟器
| 我的小组件 | Google Chrome小组件 |
|---|---|
![]() | ![]() |
API30真机

该设备上的小组件显示调整大小指示器,且可正常调整大小。
内容的提问来源于stack exchange,提问作者tilen pintarić
相关产品推荐
相关产品推荐



