VSCode扩展开发:如何实现视图容器单视图无冒号单标题显示
VS Code 单视图跨容器移动时取消标题冒号拼接方案
VS Code 对视图容器的标题渲染遵循固定逻辑:
- 当视图容器内仅挂载1个视图,且容器标题与视图标题完全一致时,引擎会自动判定为单视图容器,无论视图放在panel区域、还是被移动到Activity Bar的其他容器位置,都只会渲染单个标题,不会出现
容器名:视图名的拼接格式。Problems、Output、Debug Console 这类内置视图的效果正是基于这个逻辑实现的。 - 出现冒号拼接的核心原因,是自定义扩展的配置中,视图容器的
title字段与内部视图的name字段存在差异,引擎判定二者是独立命名的实体,才会在跨容器移动时做拼接展示。
具体配置方法
- 对齐容器与视图的命名
在扩展package.json的贡献点配置中,将单视图所属容器的title值,和容器内对应视图的name值设置为完全相同的字符串,参考配置如下:{ "contributes": { "viewsContainers": { "panel": [ { "id": "custom-single-view-container", "title": "自定义工具面板", "icon": "assets/panel-icon.svg" } ] }, "views": { "custom-single-view-container": [ { "id": "custom-main-view", "name": "自定义工具面板", "type": "webview" } ] } } } - 避免额外的标题覆写
不要在扩展激活逻辑中,通过createTreeView、createWebviewView等视图创建API单独给视图设置和容器不一致的标题,也不要通过视图的title属性覆写配置文件中声明的视图名称,避免破坏引擎对单视图容器的识别。 - 跨容器拖入场景适配
若用户将你的单个视图拖入其他已存在多视图的内置/第三方容器(比如资源管理器、搜索侧边栏容器),无需额外配置:引擎在渲染多视图容器内的单个视图条目时,会直接使用视图自身的name作为展示标题,不会拼接原容器的名称。
注意:不要通过给容器设置空标题的方式规避拼接,这会导致视图默认挂载在panel区域时出现标题缺失的异常,上述命名对齐的方案是和内置视图行为完全一致的稳定实现方式,不需要调用任何内部API。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

