diff --git a/entry/src/main/ets/components/TopBar.ets b/entry/src/main/ets/components/TopBar.ets index c508578..2b25659 100644 --- a/entry/src/main/ets/components/TopBar.ets +++ b/entry/src/main/ets/components/TopBar.ets @@ -208,19 +208,27 @@ export struct FbTopBar { // ⚠️ 数据取自**本地库**(`FbPersonRepo.inst().byId`),不是名册列表里那份: // "我"常常**不在自己的名册**里(名册是"我挑出来的那一小撮"), // 从名册那批里找会静默落空 ⇒ 点了没反应(最难查的那种失败)。 - FbAvatar({ - name: this.app.session.me.name, - color: this.app.session.me.avatarColor, - dia: 32, - fontSizeVp: 14, - imageUrl: this.app.session.me.avatarUrl !== undefined - ? this.app.session.me.avatarUrl - : '' - }) - // ⚠️ `FbAvatar` 的布局尺寸在画布内(`Image` 自己撑圆),外层要显式 - // 给一个可点区域 —— 32 的头像直接当热区在真机上偏小(手指容易点空)。 + /* ⚠️ 用一层 40×40 的透明容器包住 32 的头像,**不要**直接给 `FbAvatar` + 加 `.width(40)`: + `FbAvatar` 的根节点就是那个 `Image/Text`(自己已设 `width(dia)`), + 外层尺寸修饰会把它拉到 40×40,而圆角仍是 `dia/2 = 16` + ⇒ 头像被拉成**椭圆**(视觉 bug,且编译不报错)。 + 包一层则:热区 40、头像仍是正圆 32、居中。 + (32 直接当热区在真机上偏小、手指容易点空 —— 这就是要 40 的原因。) */ + Row() { + FbAvatar({ + name: this.app.session.me.name, + color: this.app.session.me.avatarColor, + dia: 32, + fontSizeVp: 14, + imageUrl: this.app.session.me.avatarUrl !== undefined + ? this.app.session.me.avatarUrl + : '' + }) + } .width(40) .height(40) + .justifyContent(FlexAlign.Center) .margin({ left: FbMetric.gapTopActions }) .onClick((): void => { this.openMyDetail();