Showing
1 changed file
with
138 additions
and
66 deletions
| @@ -94,7 +94,8 @@ export struct PlayerTitleView { | @@ -94,7 +94,8 @@ export struct PlayerTitleView { | ||
| 94 | } | 94 | } |
| 95 | clipStr += strArr[i] | 95 | clipStr += strArr[i] |
| 96 | } | 96 | } |
| 97 | - console.log(TAG, 'clipStr:', clipStr) | 97 | + clipStr += this.isOverLines ? '...' : ''; |
| 98 | + console.log(TAG, 'clipStr2:', clipStr) | ||
| 98 | return clipStr | 99 | return clipStr |
| 99 | } | 100 | } |
| 100 | 101 | ||
| @@ -130,7 +131,8 @@ export struct PlayerTitleView { | @@ -130,7 +131,8 @@ export struct PlayerTitleView { | ||
| 130 | } | 131 | } |
| 131 | clipStr += strArr[i] | 132 | clipStr += strArr[i] |
| 132 | } | 133 | } |
| 133 | - console.log(TAG, 'clipTitleText clipStr:', clipStr) | 134 | + console.log(TAG, 'clipTitleText clipStr1:', clipStr) |
| 135 | + clipStr += this.isTitleOverLines ? '...' : ''; | ||
| 134 | return clipStr | 136 | return clipStr |
| 135 | } | 137 | } |
| 136 | 138 | ||
| @@ -217,7 +219,54 @@ export struct PlayerTitleView { | @@ -217,7 +219,54 @@ export struct PlayerTitleView { | ||
| 217 | // }) | 219 | // }) |
| 218 | // } | 220 | // } |
| 219 | // } else { | 221 | // } else { |
| 220 | - if (this.summary && this.titleLines < 4) { | 222 | + this.detailDesc() |
| 223 | + // } | ||
| 224 | + Text(DateTimeUtils.formatDate(new Date(this.contentDetailData?.publishTime).getTime(), | ||
| 225 | + DateTimeUtils.PATTERN_DATE_TIME_HYPHEN_MM)) | ||
| 226 | + .fontSize(12) | ||
| 227 | + .fontColor(Color.White) | ||
| 228 | + .opacity(0.7) | ||
| 229 | + .lineHeight(16) | ||
| 230 | + .fontWeight(400) | ||
| 231 | + .fontFamily('PingFang SC-Regular') | ||
| 232 | + .margin({ top: 8, bottom: 8 }) | ||
| 233 | + | ||
| 234 | + } | ||
| 235 | + .width(this.windowWidth - 150 + 'px') | ||
| 236 | + .padding({ left: 16, right: 22 }) | ||
| 237 | + .alignItems(HorizontalAlign.Start) | ||
| 238 | + .visibility(this.isOpenDetail || this.isDragging ? Visibility.None : Visibility.Visible) | ||
| 239 | + } | ||
| 240 | + | ||
| 241 | + @Builder | ||
| 242 | + detailDesc() { | ||
| 243 | + /** | ||
| 244 | + * 标题大于三行或存在简介显示查看详情按钮 | ||
| 245 | + */ | ||
| 246 | + // if (this.rmhPlatform == 1) { | ||
| 247 | + // if (this.titleHeight > 200 || this.summary) { | ||
| 248 | + // Text('查看详情 > ') | ||
| 249 | + // .padding({ | ||
| 250 | + // left: 6, | ||
| 251 | + // right: 6, | ||
| 252 | + // top: 4, | ||
| 253 | + // bottom: 4 | ||
| 254 | + // }) | ||
| 255 | + // .borderRadius(2) | ||
| 256 | + // .backgroundColor('#99636363') | ||
| 257 | + // .fontFamily('PingFang SC-Regular') | ||
| 258 | + // .fontColor(Color.White) | ||
| 259 | + // .fontSize(12) | ||
| 260 | + // .lineHeight(14) | ||
| 261 | + // .fontWeight(400) | ||
| 262 | + // .onClick(() => { | ||
| 263 | + // this.isOpenDetail = true | ||
| 264 | + // this.dialogController?.open() | ||
| 265 | + // }) | ||
| 266 | + // } | ||
| 267 | + // } else { | ||
| 268 | + if (this.summary && this.titleLines < 4) { | ||
| 269 | + Stack({ alignContent: Alignment.TopStart }) { | ||
| 221 | Text() { | 270 | Text() { |
| 222 | Span(this.clipText(this.summary, 14, this.summaryLines, this.windowWidth - 150 - vp2px(50))) | 271 | Span(this.clipText(this.summary, 14, this.summaryLines, this.windowWidth - 150 - vp2px(50))) |
| 223 | .fontSize(14) | 272 | .fontSize(14) |
| @@ -229,8 +278,17 @@ export struct PlayerTitleView { | @@ -229,8 +278,17 @@ export struct PlayerTitleView { | ||
| 229 | this.isOpenDetail = true | 278 | this.isOpenDetail = true |
| 230 | this.dialogController?.open() | 279 | this.dialogController?.open() |
| 231 | }) | 280 | }) |
| 232 | - if (this.isOverLines) { | ||
| 233 | - Span('... 全文') | 281 | + } |
| 282 | + // .position({ x: 0, y: 0 }) | ||
| 283 | + .padding({ | ||
| 284 | + left: 0, | ||
| 285 | + right: 6, | ||
| 286 | + top: 0, | ||
| 287 | + bottom: 8 | ||
| 288 | + }) | ||
| 289 | + if (this.isOverLines) { | ||
| 290 | + Text() { | ||
| 291 | + Span('全文') | ||
| 234 | .fontColor('#888888') | 292 | .fontColor('#888888') |
| 235 | .fontWeight(400) | 293 | .fontWeight(400) |
| 236 | .fontFamily('PingFang SC-Regular') | 294 | .fontFamily('PingFang SC-Regular') |
| @@ -251,80 +309,94 @@ export struct PlayerTitleView { | @@ -251,80 +309,94 @@ export struct PlayerTitleView { | ||
| 251 | this.isOpenDetail = true | 309 | this.isOpenDetail = true |
| 252 | this.dialogController?.open() | 310 | this.dialogController?.open() |
| 253 | }) | 311 | }) |
| 254 | - | ||
| 255 | } | 312 | } |
| 313 | + .textAlign(TextAlign.Center) | ||
| 314 | + // .width('100%') | ||
| 315 | + .position({ x: '100%', y: this.summaryLines*23 }) //行高+margin | ||
| 316 | + .translate({ x: '-100%', y: '-100%' }) | ||
| 317 | + // .markAnchor({ x: '100%', y: '100%' }) | ||
| 318 | + .padding({ | ||
| 319 | + left: 0, | ||
| 320 | + right: 6, | ||
| 321 | + top: 0, | ||
| 322 | + bottom: 6 | ||
| 323 | + }) | ||
| 256 | } | 324 | } |
| 257 | - .padding({ | ||
| 258 | - left: 0, //6 | ||
| 259 | - right: 6, | ||
| 260 | - top: 0, //4 | ||
| 261 | - bottom: 8 | ||
| 262 | - }) | ||
| 263 | - | ||
| 264 | } | 325 | } |
| 265 | - // } | ||
| 266 | - Text(DateTimeUtils.formatDate(new Date(this.contentDetailData?.publishTime).getTime(), | ||
| 267 | - DateTimeUtils.PATTERN_DATE_TIME_HYPHEN_MM)) | ||
| 268 | - .fontSize(12) | ||
| 269 | - .fontColor(Color.White) | ||
| 270 | - .opacity(0.7) | ||
| 271 | - .lineHeight(16) | ||
| 272 | - .fontWeight(400) | ||
| 273 | - .fontFamily('PingFang SC-Regular') | ||
| 274 | - .margin({ top: 8, bottom: 8 }) | ||
| 275 | - | 326 | + .width('100%') |
| 276 | } | 327 | } |
| 277 | - .width(this.windowWidth - 150 + 'px') | ||
| 278 | - .padding({ left: 16, right: 22 }) | ||
| 279 | - .alignItems(HorizontalAlign.Start) | ||
| 280 | - .visibility(this.isOpenDetail || this.isDragging ? Visibility.None : Visibility.Visible) | ||
| 281 | } | 328 | } |
| 282 | 329 | ||
| 330 | + /** | ||
| 331 | + * 标题 | ||
| 332 | + * */ | ||
| 283 | @Builder | 333 | @Builder |
| 284 | titleBuilder() { | 334 | titleBuilder() { |
| 285 | - Text() { | ||
| 286 | - Span(this.clipTitleText(this.getTitle(), 16, 4, this.windowWidth - 234 - vp2px(50))) | ||
| 287 | - .fontSize(16) | ||
| 288 | - .fontColor(Color.White) | ||
| 289 | - .lineHeight(22) | ||
| 290 | - .fontWeight(600) | ||
| 291 | - .fontFamily('PingFang SC-Regular') | ||
| 292 | - if (this.isTitleOverLines) { | ||
| 293 | - Span('... 全文') | 335 | + // Stack({ alignContent: this.isTitleOverLines ? Alignment.BottomEnd : Alignment.Start }) { |
| 336 | + Stack({ alignContent: Alignment.TopStart }) { | ||
| 337 | + Text() { | ||
| 338 | + Span(this.clipTitleText(this.getTitle(), 16, 4, this.windowWidth - 234 - vp2px(50))) | ||
| 339 | + .fontSize(16) | ||
| 294 | .fontColor(Color.White) | 340 | .fontColor(Color.White) |
| 341 | + .lineHeight(22) | ||
| 295 | .fontWeight(600) | 342 | .fontWeight(600) |
| 296 | .fontFamily('PingFang SC-Regular') | 343 | .fontFamily('PingFang SC-Regular') |
| 297 | - .fontSize(12) | ||
| 298 | - .onClick(() => { | ||
| 299 | - this.isOpenDetail = true | ||
| 300 | - this.dialogController?.open() | ||
| 301 | - }) | ||
| 302 | - ImageSpan($r('app.media.comment_unfold_svg')) | ||
| 303 | - .width(14) | ||
| 304 | - .height(14) | ||
| 305 | - .objectFit(ImageFit.Fill) | ||
| 306 | - .verticalAlign(ImageSpanAlignment.BOTTOM) | ||
| 307 | - .margin({ bottom: 1 })// .padding({ | ||
| 308 | - // bottom: 4 | ||
| 309 | - // }) | ||
| 310 | - .onClick(() => { | ||
| 311 | - this.isOpenDetail = true | ||
| 312 | - this.dialogController?.open() | ||
| 313 | - }) | ||
| 314 | 344 | ||
| 315 | } | 345 | } |
| 346 | + // .position({ x: 0, y: 0 }) | ||
| 347 | + .onAreaChange((oldArea: Area, newArea: Area) => { | ||
| 348 | + //console.info(`cj2024 titleLines = ${newArea.height as number} line = ${(newArea.height as number) / 20}`) | ||
| 349 | + this.titleLines = Math.floor((newArea.height as number) / 22) // 22是行高 | ||
| 350 | + //console.info(`cj2024 titleLines = ${this.titleLines}`) | ||
| 351 | + this.updateSummaryLines() | ||
| 352 | + }) | ||
| 353 | + .maxLines(4) | ||
| 354 | + .textOverflow({ overflow: TextOverflow.Ellipsis }) | ||
| 355 | + .padding({ | ||
| 356 | + left: 0, //6 | ||
| 357 | + right: 6, | ||
| 358 | + top: 0, //4 | ||
| 359 | + bottom: 8 | ||
| 360 | + }) | ||
| 361 | + | ||
| 362 | + Text() { | ||
| 363 | + if (this.isTitleOverLines) { | ||
| 364 | + Span('全文') | ||
| 365 | + .fontColor(Color.White) | ||
| 366 | + .fontWeight(600) | ||
| 367 | + .fontFamily('PingFang SC-Regular') | ||
| 368 | + .fontSize(12) | ||
| 369 | + .onClick(() => { | ||
| 370 | + this.isOpenDetail = true | ||
| 371 | + this.dialogController?.open() | ||
| 372 | + }) | ||
| 373 | + ImageSpan($r('app.media.comment_unfold_svg')) | ||
| 374 | + .width(14) | ||
| 375 | + .height(14) | ||
| 376 | + .objectFit(ImageFit.Fill) | ||
| 377 | + .verticalAlign(ImageSpanAlignment.BOTTOM) | ||
| 378 | + .margin({ bottom: 1 })// .padding({ | ||
| 379 | + // bottom: 4 | ||
| 380 | + // }) | ||
| 381 | + .onClick(() => { | ||
| 382 | + this.isOpenDetail = true | ||
| 383 | + this.dialogController?.open() | ||
| 384 | + }) | ||
| 385 | + } | ||
| 386 | + } | ||
| 387 | + .textAlign(TextAlign.Center) | ||
| 388 | + // .width('100%') | ||
| 389 | + .position({ x: '100%', y: this.titleLines*23 }) //行高+margin | ||
| 390 | + .translate({ x: '-100%', y: '-100%' }) | ||
| 391 | + // .position({ x: '100%', y: '100%' }) | ||
| 392 | + // .markAnchor({ x: '100%', y: '100%' }) | ||
| 393 | + .padding({ | ||
| 394 | + left: 0, //6 | ||
| 395 | + right: 6, | ||
| 396 | + top: 0, //4 | ||
| 397 | + bottom: 8 | ||
| 398 | + }) | ||
| 316 | } | 399 | } |
| 317 | - .onAreaChange((oldArea: Area, newArea: Area) => { | ||
| 318 | - //console.info(`cj2024 titleLines = ${newArea.height as number} line = ${(newArea.height as number) / 20}`) | ||
| 319 | - this.titleLines = Math.floor((newArea.height as number) / 22) // 22是行高 | ||
| 320 | - //console.info(`cj2024 titleLines = ${this.titleLines}`) | ||
| 321 | - this.updateSummaryLines() | ||
| 322 | - }) | ||
| 323 | - .padding({ | ||
| 324 | - left: 0, //6 | ||
| 325 | - right: 6, | ||
| 326 | - top: 0, //4 | ||
| 327 | - bottom: 8 | ||
| 328 | - }) | 400 | + .width('100%') |
| 329 | } | 401 | } |
| 330 | } | 402 | } |
-
Please register or login to post a comment