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

移除Apps Script插件中DecoratedText灰色悬停效果及替代方案咨询

问题解答

1. 移除DecoratedText的悬停灰色背景

DecoratedText本身就是为可交互场景设计的组件,哪怕没设置点击动作,默认也会带有悬停高亮效果。要消除这个效果,有两种可行方案:

  • 方案一:绑定空点击动作
    给DecoratedText添加一个不执行任何操作的空动作,就能覆盖默认的可交互状态,悬停背景会直接消失:

    function getCompressFormCard(currentElement) {
      let fileText = CardService.newDecoratedText()
        .setText(currentElement.title)
        .setStartIcon(CardService.newIconImage().setIconUrl(currentElement.iconUrl))
        .setWrapText(true)
        // 添加空动作移除悬停效果
        .setOnClickAction(CardService.newAction());
    
      let section = CardService.newCardSection()
        .setCollapsible(false)
        .addWidget(fileText);
    
      return CardService.newCardBuilder().addSection(section).build();
    }
    
  • 方案二:改用非交互组件组合
    如果完全不需要交互性,直接用Image+TextParagraph的组合替代DecoratedText,从根源上避免可交互样式:

    function getCompressFormCard(currentElement) {
      // 创建左侧图标
      let icon = CardService.newImage()
        .setImageUrl(currentElement.iconUrl)
        .setAltText("Icon");
      
      // 创建可换行的文本段落
      let textPara = CardService.newTextParagraph()
        .setText(currentElement.title);
    
      // 用FlexBox实现图标与文本的横向排列
      let flexBox = CardService.newFlexBox()
        .setDirection(CardService.FlexDirection.ROW)
        .setAlignItems(CardService.VerticalAlignment.CENTER)
        .addItem(icon)
        .addItem(textPara, 1); // 文本占剩余空间,自动换行
    
      let section = CardService.newCardSection()
        .setCollapsible(false)
        .addWidget(flexBox);
    
      return CardService.newCardBuilder().addSection(section).build();
    }
    

2. 用TextParagraph实现类似视觉效果

TextParagraph本身无法直接嵌入图标,但可以通过FlexBox组件将Image和TextParagraph组合,实现图标在左/右、文本换行的效果:

图标在左侧,文本自动换行

上面方案二的代码已经实现了这个效果,核心是用FlexBox横向排列图标与文本,给TextParagraph设置占比为1,让它自动填充剩余空间并换行。

图标在右侧

只需调整FlexBox内的组件顺序,先放文本再放图标即可:

let flexBox = CardService.newFlexBox()
  .setDirection(CardService.FlexDirection.ROW)
  .setAlignItems(CardService.VerticalAlignment.CENTER)
  .addItem(textPara, 1) // 文本占剩余空间
  .addItem(icon); // 图标放在右侧

文本换行控制

TextParagraph默认会根据容器宽度自动换行;如果需要强制不换行,要么控制文本长度,要么改用DecoratedText并设置setWrapText(false)——TextParagraph本身没有直接的不换行配置项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:25:17