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

Glance Widget尺寸不符求助:110x40dp设置实际显示偏小

问题原因与解决方案

为什么尺寸不匹配?

Android App Widget的minWidth/minHeight并非直接对应实际显示的dp值,而是基于系统网格规则计算的:(列数×70) - 30(宽度)、(行数×70) - 30(高度)。你设置的110dp=(2×70)-30、40dp=(1×70)-30是符合2列1行的网格规则的,问题出在Glance布局里硬写了固定尺寸——Glance的布局是在系统分配的Widget容器内渲染,硬写size(110.dp,40.dp)会和容器实际可用空间产生偏差。

正确实现方式

1. 保留appwidget-provider定义(你的配置是符合网格规则的)

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/glance_default_loading_layout"
    android:minWidth="110dp"
    android:minHeight="40dp"
    android:minResizeWidth="110dp"
    android:minResizeHeight="40dp"
    android:resizeMode="none"
/>

2. 修改Glance布局代码,用fillMaxSize替代固定尺寸

让布局填充满系统分配的整个Widget容器,而不是硬写尺寸:

provideContent {
    Box(
        modifier = GlanceModifier
            .fillMaxSize()
            .background(color = Color.Green.copy(alpha = 0.5f))
            .padding(4.dp) // 可选,给文字添加边距避免贴边
    ) {
        Text(text = "ThemeId from prefs = $themeId")
    }
}

推荐的Widget定义规范

  • 始终遵循Android网格规则计算minWidth/minHeight,避免随意设置尺寸导致系统适配异常。
  • Glance布局中优先使用fillMaxSize/fillMaxWidth/fillMaxHeight来适配容器空间,不要硬写固定尺寸。
  • 用padding、align等修饰词调整内部内容的位置,提升美观度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 12:45:16