Text
顯示一段文本的組件。
說明:
開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
該組件從API Version 7開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。
子組件
可以包含[Span]和[ImageSpan]子組件。
接口
Text(content?: string | Resource)
從API version 9開始,該接口支持在ArkTS卡片中使用。
參數:
參數名 | 參數類型 | 必填 | 參數描述 |
---|---|---|---|
content | string | [Resource] | 否 |
屬性
除支持[通用屬性]和[文本通用屬性]外,還支持以下屬性:
名稱 | 參數類型 | 描述 |
---|---|---|
textAlign | [TextAlign] | 設置文本段落在水平方向的對齊方式。 默認值:TextAlign.Start 說明: 文本段落寬度占滿Text組件寬度;可通過[align]屬性控制文本段落在垂直方向上的位置,此組件中不可通過align屬性控制文本段落在水平方向上的位置,即align屬性中Alignment.TopStart、Alignment.Top、Alignment.TopEnd效果相同,控制內容在頂部,Alignment.Start、Alignment.Center、Alignment.End效果相同,控制內容垂直居中,Alignment.BottomStart、Alignment.Bottom、Alignment.BottomEnd效果相同,控制內容在底部。結合TextAlign屬性可控制內容在水平方向的位置。 從API version 9開始,該接口支持在ArkTS卡片中使用。 |
textOverflow | {overflow: [TextOverflow]} | 設置文本超長時的顯示方式。 默認值:{overflow: TextOverflow.Clip}**說明:**文本截斷是按字截斷。例如,英文以單詞為最小單位進行截斷,若需要以字母為單位進行截斷,可在字母間添加零寬空格:u200B。 當overflow 設置為TextOverflow.None、TextOverflow.Clip、TextOverflow.Ellipsis時,需配合maxLines 使用,單獨設置不生效。設置TextOverflow.None與TextOverflow.Clip效果一樣。當overflow 設置為TextOverflow.Marquee時,文本在一行內滾動顯示,設置maxLines 及copyOption 屬性均不生效。 從API version 9開始,該接口支持在ArkTS卡片中使用。 |
maxLines | number | 設置文本的最大行數。 默認值:Infinity**說明:**默認情況下,文本是自動折行的,如果指定此參數,則文本最多不會超過指定的行。如果有多余的文本,可以通過textOverflow 來指定截斷方式。 從API version 9開始,該接口支持在ArkTS卡片中使用。 |
lineHeight | string | number |
decoration | { type: [TextDecorationType], color?: [ResourceColor] } | 設置文本裝飾線樣式及其顏色。 默認值:{ type: TextDecorationType.None, color:Color.Black } 從API version 9開始,該接口支持在ArkTS卡片中使用。 |
baselineOffset | number | string |
letterSpacing | number | string |
minFontSize | number | string |
maxFontSize | number | string |
textCase | [TextCase] | 設置文本大小寫。 默認值:TextCase.Normal 從API version 9開始,該接口支持在ArkTS卡片中使用。 |
copyOption9+ | [CopyOptions] | 組件支持設置文本是否可復制粘貼。 默認值:CopyOptions.None 該接口支持在ArkTS卡片中使用。**說明:**設置copyOptions為CopyOptions.InApp或者CopyOptions.LocalDevice,長按文本,會彈出文本選擇菜單,可選中文本并進行復制、全選操作。 |
textShadow10+ | [ShadowOptions] | 設置文字陰影效果。 |
heightAdaptivePolicy10+ | [TextHeightAdaptivePolicy] | 設置文本自適應高度的方式。 默認值:TextHeightAdaptivePolicy.MAX_LINES_FIRST。**說明:**當設置為TextHeightAdaptivePolicy.MAX_LINES_FIRST時,優先使用maxLines 屬性來調整文本高度。如果使用maxLines 屬性的布局大小超過了布局約束,則嘗試在minFontSize 和maxFontSize 的范圍內縮小字體以顯示更多文本。 當設置為TextHeightAdaptivePolicy.MIN_FONT_SIZE_FIRST時,優先使用minFontSize 屬性來調整文本高度。如果使用minFontSize 屬性可以將文本布局在一行中,則嘗試在minFontSize 和maxFontSize 的范圍內增大字體并使用最大可能的字體大小。 當設置為TextHeightAdaptivePolicy.LAYOUT_CONSTRAINT_FIRST時,優先使用布局約束來調整文本高度。如果布局大小超過布局約束,則嘗試在minFontSize 和maxFontSize 的范圍內縮小字體以滿足布局約束。如果將字體大小縮小到minFontSize 后,布局大小仍然超過布局約束,則刪除超過布局約束的行。 |
textIndent10+ | number | string |
font10+ | [Font] | 設置文本樣式。包括字體大小、字體粗細、字體族和字體風格。 |
說明:
HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
不支持Text內同時存在文本內容和Span或ImageSpan子組件。如果同時存在,只顯示Span或ImageSpan內的內容。
通用屬性中形狀裁剪[clip]屬性,在Text默認值為true。
事件
支持[通用事件]
示例
示例1
// xxx.ets
@Entry
@Component
struct TextExample1 {
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween }) {
// 文本水平方向對齊方式設置
// 單行文本
Text('textAlign').fontSize(9).fontColor(0xCCCCCC)
Text('TextAlign set to Center.')
.textAlign(TextAlign.Center)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
Text('TextAlign set to Start.')
.textAlign(TextAlign.Start)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
Text('TextAlign set to End.')
.textAlign(TextAlign.End)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
// 多行文本
Text('This is the text content with textAlign set to Center.')
.textAlign(TextAlign.Center)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
Text('This is the text content with textAlign set to Start.')
.textAlign(TextAlign.Start)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
Text('This is the text content with textAlign set to End.')
.textAlign(TextAlign.End)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
// 文本超長時顯示方式
Text('TextOverflow+maxLines').fontSize(9).fontColor(0xCCCCCC)
// 超出maxLines截斷內容展示
Text('This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content. This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content.')
.textOverflow({ overflow: TextOverflow.Clip })
.maxLines(1)
.fontSize(12)
.border({ width: 1 })
.padding(10)
// 超出maxLines展示省略號
Text('This is set textOverflow to Ellipsis text content This is set textOverflow to Ellipsis text content.'.split('')
.join('u200B'))
.textOverflow({ overflow: TextOverflow.Ellipsis })
.maxLines(1)
.fontSize(12)
.border({ width: 1 })
.padding(10)
Text('lineHeight').fontSize(9).fontColor(0xCCCCCC)
Text('This is the text with the line height set. This is the text with the line height set.')
.fontSize(12).border({ width: 1 }).padding(10)
Text('This is the text with the line height set. This is the text with the line height set.')
.fontSize(12).border({ width: 1 }).padding(10)
.lineHeight(20)
}.height(600).width(350).padding({ left: 35, right: 35, top: 35 })
}
}
示例2
@Entry
@Component
struct TextExample2 {
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween }) {
Text('decoration').fontSize(9).fontColor(0xCCCCCC)
Text('This is the text content with the decoration set to LineThrough and the color set to Red.')
.decoration({
type: TextDecorationType.LineThrough,
color: Color.Red
})
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
Text('This is the text content with the decoration set to Overline and the color set to Red.')
.decoration({
type: TextDecorationType.Overline,
color: Color.Red
})
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
Text('This is the text content with the decoration set to Underline and the color set to Red.')
.decoration({
type: TextDecorationType.Underline,
color: Color.Red
})
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
// 文本基線偏移
Text('baselineOffset').fontSize(9).fontColor(0xCCCCCC)
Text('This is the text content with baselineOffset 0.')
.baselineOffset(0)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
Text('This is the text content with baselineOffset 30.')
.baselineOffset(30)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
Text('This is the text content with baselineOffset -20.')
.baselineOffset(-20)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
// 文本字符間距
Text('letterSpacing').fontSize(9).fontColor(0xCCCCCC)
Text('This is the text content with letterSpacing 0.')
.letterSpacing(0)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
Text('This is the text content with letterSpacing 3.')
.letterSpacing(3)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
Text('This is the text content with letterSpacing -1.')
.letterSpacing(-1)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
Text('textCase').fontSize(9).fontColor(0xCCCCCC)
Text('This is the text content with textCase set to Normal.')
.textCase(TextCase.Normal)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
// 文本全小寫展示
Text('This is the text content with textCase set to LowerCase.')
.textCase(TextCase.LowerCase)
.fontSize(12)
.border({ width: 1 })
.padding(10)
.width('100%')
// 文本全大寫展示
Text('This is the text content with textCase set to UpperCase.')
.textCase(TextCase.UpperCase)
.fontSize(12).border({ width: 1 }).padding(10)
}.height(700).width(350).padding({ left: 35, right: 35, top: 35 })
}
}
示例3
textShadow,heightAdaptivePolicy,TextOverflow.MARQUEE使用示例:
@Entry
@Component
struct TextExample {
build() {
Column({ space: 8 }) {
Text('textShadow').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
// 設置文字陰影效果
Text('textShadow')
.width('80%')
.height(55)
.fontSize(40)
.lineHeight(55)
.textAlign(TextAlign.Center)
.textShadow({ radius: 10, color: Color.Black, offsetX: 0, offsetY: 0 })
.borderWidth(1)
Divider()
// 設置文本自適應高度的方式
Text('heightAdaptivePolicy').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
Text('This is the text with the height adaptive policy set')
.width('80%')
.height(90)
.borderWidth(1)
.minFontSize(10)
.maxFontSize(30)
.maxLines(3)
.textOverflow({ overflow: TextOverflow.Ellipsis })
.heightAdaptivePolicy(TextHeightAdaptivePolicy.MAX_LINES_FIRST)
Text('This is the text with the height adaptive policy set')
.width('80%')
.height(90)
.borderWidth(1)
.minFontSize(10)
.maxFontSize(30)
.maxLines(3)
.textOverflow({ overflow: TextOverflow.Ellipsis })
.heightAdaptivePolicy(TextHeightAdaptivePolicy.MIN_FONT_SIZE_FIRST)
Text('This is the text with the height adaptive policy set')
.width('80%')
.height(90)
.borderWidth(1)
.minFontSize(10)
.maxFontSize(30)
.maxLines(3)
.textOverflow({ overflow: TextOverflow.Ellipsis })
.heightAdaptivePolicy(TextHeightAdaptivePolicy.LAYOUT_CONSTRAINT_FIRST)
Divider()
Text('marquee').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
// 設置文本超長時以跑馬燈的方式展示
Text('This is the text with the text overflow set marquee')
.width(300)
.borderWidth(1)
.textOverflow({ overflow: TextOverflow.MARQUEE })
}
}
}
審核編輯 黃宇
-
組件
+關注
關注
1文章
512瀏覽量
17816 -
鴻蒙
+關注
關注
57文章
2345瀏覽量
42822
發布評論請先 登錄
相關推薦
評論