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

如何在Complications列表中设置显示图标?解决无图标异常

问题:Complications列表无法显示图标,其他位置显示正常

我的图标在应用列表、表盘Complications圆环顶部都能正常显示,但在Complications列表里完全看不到图标。以下是我的Complications实现代码和相关情况:

代码实现

class MainComplicationService : SuspendingComplicationDataSourceService() {

override fun getPreviewData(type: ComplicationType): ComplicationData? {
    if (type != ComplicationType.SHORT_TEXT) {
        return null
    }
    return createAppShortcutComplication()
}

override suspend fun onComplicationRequest(request: ComplicationRequest): ComplicationData {
    return createAppShortcutComplication()
}

private fun createAppShortcutComplication(): ComplicationData {
    val newsIcon = Icon.createWithResource(this, R.drawable.news)

    val intent = Intent(this, MiniNewsWearActivity::class.java).apply {
        component = ComponentName(this@MainComplicationService, MiniNewsWearActivity::class.java)
    }
    val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)

    return ShortTextComplicationData.Builder(
        text = PlainComplicationText.Builder("NEWS").build(),
        contentDescription = ComplicationText.EMPTY,
    )
        .setMonochromaticImage(
            MonochromaticImage.Builder(
                newsIcon
            ).build()
        )
        .setTitle(PlainComplicationText.Builder("MINI").build())
        .setTapAction(pendingIntent)
        .build()
}

显示情况

  • 应用列表图标显示正常
  • 表盘Complications圆环顶部小图标显示正常
  • Complications列表无图标显示

解决方法

Complications列表显示的图标不是从ComplicationData里的monochromaticImage读取的,而是需要在Complication数据源服务的AndroidManifest.xml配置中指定android:icon属性,同时要确保图标符合Wear OS规范:

  1. 在Manifest中配置服务图标
    找到你的MainComplicationService注册项,添加android:icon指向你的图标资源:
<service
    android:name=".MainComplicationService"
    android:icon="@drawable/news" <!-- 添加这行指定图标 -->
    android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
    <intent-filter>
        <action android:name="android.support.wearable.complications.action.DATA_SOURCE" />
    </intent-filter>
    <meta-data
        android:name="android.support.wearable.complications.SUPPORTED_TYPES"
        android:value="short_text" />
    <!-- 其他已有的meta-data配置 -->
</service>
  1. 检查图标资源规范
    确保你的news图标满足Wear OS的要求:
  • 推荐尺寸:mdpi(48x48dp)、hdpi(72x72dp)、xhdpi(96x96dp)、xxhdpi(144x144dp)
  • 采用单色设计(列表会统一调整图标色调),避免过多复杂色彩

原理说明

Complications列表展示的是数据源服务的标识图标,而非表盘上显示的Complication内容图标,所以必须通过Manifest配置服务的android:icon才能让列表正确显示图标。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:53:36