有人知道如何实现图文混排吗?

实现图文混排

HarmonyOS
2024-05-26 12:25:46
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
mzshj

本文主要用于实现图文混排,如商品卡片标题、图片小标前缀(活动、天猫标识等)+商品名/商品描述或者视频评论区可包含文字、表情包、图片混合排布。

使用的核心API

  • @ohos.font (注册自定义字体)
  • Span

核心代码解释

1.首先需要进行注册自定义在pages包的同一目录下创建一个font包,在font包中加入自己需要的字体。

2.通过text-span来实现图文的混排,如果需要加入表情包就需要有一个emoji的ttf文件注册的字体,然后在Text的familyfont进行设置。

import font from '@ohos.font' 
​ 
@Entry 
@Component 
struct SpanExample { 
scroller: Scroller = new Scroller() 
build() { 
  Scroll(this.scroller){ 
    Column() { 
      Text('英雄,安息!脚下这片土地是你浴血守卫的山河') 
        .fontSize(20) 
        .fontWeight(500) 
        .fontFamily('msyhl') 
      Flex({ alignItems: ItemAlign.Start }) { 
        Text() { 
          Span('今天,第十批25名在韩中国人民志愿军烈士遗骸安葬仪式在沈阳抗美援朝烈士陵园举行。' + 
            '自2014年起至今,连续十年,已有938位志愿军烈士忠魂回到这片他们用鲜血和生命守护的热土。') 
            .fontSize(20) 
            .fontWeight(500) 
            .fontFamily('STXINGKA') 
            .margin({ left: 120 }) 
          Span("❤❤❤😀") 
            .fontFamily('ARIALUNI') 
            .fontSize(20) 
            .height("10%") 
          ImageSpan($r("app.media.photo_1")) 
            .width('100%') 
            .height('20%') 
            .objectFit(ImageFit.Auto) 
            .verticalAlign(ImageSpanAlignment.CENTER) 
          Span(" ") 
          ImageSpan($r('app.media.photo_2')) 
            .width('100%') 
            .height('20%') 
            .objectFit(ImageFit.Auto) 
            .verticalAlign(ImageSpanAlignment.BOTTOM) 
          Span(" ") 
          ImageSpan($r('app.media.photo_3')) 
            .width('100%') 
            .height('20%') 
            .objectFit(ImageFit.Auto) 
            .verticalAlign(ImageSpanAlignment.BOTTOM) 
​ 
          Span("忠魂不泯,浩气长存,祖国和人民永远不会忘记!向英烈致敬!") 
            .fontSize(20) 
            .fontWeight(500) 
            .fontFamily('STXINGKA') 
            .margin({ left: 120 }) 
          ImageSpan($r('app.media.photo_4')) 
            .width('10%') 
            .height('5%') 
            .verticalAlign(ImageSpanAlignment.BOTTOM) 
        } 
        .width('100%') 
        .textIndent(50) 
​ 
​ 
      } 
    }.width('100%').height('100%').padding({ left: 0, right: 0, top: 0 }) 
  }.scrollable(ScrollDirection.Vertical) // 滚动方向纵向 
  .scrollBar(BarState.On) // 滚动条常驻显示 
  .scrollBarColor(Color.Gray) // 滚动条颜色 
  .scrollBarWidth(10) // 滚动条宽度 
  .edgeEffect(EdgeEffect.None) 
} 
}
分享
微博
QQ
微信
回复
2024-05-27 16:11:18
相关问题
如何选择图文混排实现方案
2077浏览 • 1回复 待解决
基于原生能力实现图文混排
381浏览 • 1回复 待解决
关于图文混排实现方式有哪些
278浏览 • 1回复 待解决
关于实现图文混排的几种方式优劣点
358浏览 • 1回复 待解决
支持图文混排组件及解决方案
168浏览 • 1回复 待解决
Text 组件如何渲染图文动态混排
869浏览 • 1回复 待解决
如何实现振动,有人知道
1102浏览 • 2回复 待解决
如何实现图片预览,有人知道
489浏览 • 1回复 待解决
如何实现翻页功能,有人知道
1866浏览 • 1回复 待解决
如何实现镂空效果,有人知道?
298浏览 • 1回复 待解决
如何实现http长连接,有人知道
1600浏览 • 1回复 待解决
热重载该如何实现有人知道
742浏览 • 1回复 待解决
如何实现防截屏功能,有人知道
1898浏览 • 1回复 待解决
弧形进度条实现有人知道方法
659浏览 • 1回复 待解决
如何保存faultLogger ,有人知道
546浏览 • 1回复 待解决
如何发送短信,有人知道?
1841浏览 • 1回复 待解决
如何跳出ForEach,有人知道
1949浏览 • 1回复 待解决
有人知道JS menu如何隐藏
4474浏览 • 1回复 待解决
$$语法如何使用?有人知道
528浏览 • 1回复 待解决
如何获取windowStage,有人知道
366浏览 • 1回复 待解决