HarmonyOS 鸿蒙Next Text()组件设置文本最大行并添加[展开][收起]标签方法
HarmonyOS 鸿蒙Next Text()组件设置文本最大行并添加[展开][收起]标签方法 如下代码,虽然可以实现需求,但是不美观,可能会出现[半个字]的情况,所以还请各位帮忙看看有什么更好的解决办法~
@Entry
@Component
struct Index {
@State isUnfold: boolean = false
build() {
if (this.isUnfold == false){
Stack({ alignContent: Alignment.BottomEnd }) {
Text('央视网消息(焦点访谈):宪法是我国的根本大法,是治国安邦的总章程,是保持国家统一、民族团结、经济发展、社会进步和长治久安的法律基础。今年12月4日是第10个国家宪法日,12月1—7日是第6个宪法宣传周。今年宪法宣传周的主题是“大力弘扬宪法精神,建设社会主义法治文化”。10年来,我国通过组织丰富多样的宪法宣传学习主题活动,让宪法走进校园、走进农村、走进企事业单位,目的就是让大家尊崇宪法,让法治文化沁润人心,让人们都能知法学法守法用法。')
.maxLines(3)
.textOverflow({ overflow: TextOverflow.Clip })
Text() {
Span(' ...')
Span(' 展开').fontColor('#2667FF')
}.backgroundColor('#ffffff').width(60).textAlign(TextAlign.Center).onClick(() => {
this.isUnfold = true
})
}
} else {
Stack({ alignContent: Alignment.BottomEnd }) {
Text('央视网消息(焦点访谈):宪法是我国的根本大法,是治国安邦的总章程,是保持国家统一、民族团结、经济发展、社会进步和长治久安的法律基础。今年12月4日是第10个国家宪法日,12月1—7日是第6个宪法宣传周。今年宪法宣传周的主题是“大力弘扬宪法精神,建设社会主义法治文化”。10年来,我国通过组织丰富多样的宪法宣传学习主题活动,让宪法走进校园、走进农村、走进企事业单位,目的就是让大家尊崇宪法,让法治文化沁润人心,让人们都能知法学法守法用法。')
Text('收起').fontColor('#2667FF').backgroundColor('#ffffff').width(60).textAlign(TextAlign.Center).onClick(() => {
this.isUnfold = false
})
}
}
}
}
更多关于HarmonyOS 鸿蒙Next Text()组件设置文本最大行并添加[展开][收起]标签方法的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在aboutToAppear中判断isExpanded是否为true无效! 手动设置为true就可以
这个也会存在显示[一半文字]的情况
更多关于HarmonyOS 鸿蒙Next Text()组件设置文本最大行并添加[展开][收起]标签方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
遮挡半个字的情况,用个左透明的渐变色?
或者计算文字宽度吧,逐行加到数组里,再渲染出来!
你好 请问是怎么弄呢 不太明白
还没实现,他给的代码依旧有【遮挡半个字】的情况,
这个方法我已经试过了,但是随着屏幕的变化,后面的字有时候是在同一行,有时候就会换行。
所以暂时也没有其他办法解决这种问题啦吧!
- 首先使用measure.measureText()方法测量实际文本宽度,接着使用display.getAllDisplays()获取手机屏幕宽度,然后用“屏幕宽度 * 最大行数 * 组件宽度比例”的结果和“实际文本宽度”进行比较大小,判断是否需要“…展开全文”;
- 当需要“…展开全文”时,只展示maxLines属性设置的固定高度的文本内容,当点击“…展开全文”时将该文本改成“…收起”并添加curves.springMotion曲线动画,同时在animateTo的显示动效的闭包函数中将maxLines属性值修改为-1使得该属性无效;
- 当需要“…收起”时,将collapseText的值改为“…展开全文”,并设置收起动画。
王求可可: 获取屏幕宽度可以修改下,计算内外边距会导致代码不好通用,建议通过 .onAreaChange
,拿到父节点的宽~
用preview好像看不到效果,
在HarmonyOS鸿蒙Next中,Text
组件可以通过maxLines
属性设置文本的最大显示行数。要实现文本的[展开][收起]功能,可以结合Text
组件的onClick
事件和状态管理来控制文本的显示行数。
-
设置最大行数:使用
maxLines
属性限制文本显示的行数。例如,设置maxLines={3}
时,文本最多显示3行,超出部分会被截断。 -
添加[展开][收起]标签:通过状态变量控制
maxLines
的值。初始时,maxLines
设置为3,文本显示为截断状态,并显示[展开]标签。点击[展开]标签后,将maxLines
设置为null
,文本完全展开,并显示[收起]标签。点击[收起]标签后,maxLines
恢复为3,文本再次截断。 -
代码示例:
@Entry
@Component
struct TextExpandCollapse {
@State isExpanded: boolean = false;
build() {
Column() {
Text('这里是长文本内容,超出部分将被截断。这里是长文本内容,超出部分将被截断。')
.maxLines(this.isExpanded ? null : 3)
.onClick(() => {
this.isExpanded = !this.isExpanded;
});
Text(this.isExpanded ? '[收起]' : '[展开]')
.onClick(() => {
this.isExpanded = !this.isExpanded;
});
}
}
}
通过上述方法,可以在HarmonyOS鸿蒙Next中实现文本的[展开][收起]功能。