HarmonyOS(鸿蒙)——Text(文本)组件介绍

·  阅读 370
HarmonyOS(鸿蒙)——Text(文本)组件介绍

「这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战

一、简介

Text是用来显示字符串的组件,在界面上显示为一块文本区域。Text作为一个基本组件,有很多扩展,常见的有按钮组件Button,文本编辑组件TextField。

Text组件继承自Componet。

华为官方学习地址:

developer.harmonyos.com/cn/docs/doc…

二、属性

Text组件支持的属性比较多,但是由于其非常重要,因此每个属性我会根据官网文档一一实现。

2.1 text

属性名称中文描述取值取值说明使用案例
text显示文本string类型可以直接设置文本字串,也可以引用string资源(推荐使用)。ohos:text="熄屏时间"ohos:text="$string:test_str"

代码演示:

 <Text
       ohos:id="$+id:text"
       ohos:height="match_content"
       ohos:width="match_content"
       ohos:text="李子捌"/>
复制代码

显示 效果:

2.2 text_size

属性名称中文描述取值取值说明使用案例
text_size文本大小float类型表示字体大小的float类型。可以是浮点数值,其默认单位为px;也可以是带px/vp/fp单位的浮点数值;也可以引用float资源。ohos:text_size="30"ohos:text_size="16fp"ohos:text_size="$float:size_value"

代码演示:

 <Text
       ohos:id="$+id:text"
       ohos:height="match_content"
       ohos:width="match_content"
       ohos:text="150px"
       ohos:text_size="150px"/>
复制代码

显示 效果:

2.3 text_color

属性名称中文描述取值取值说明使用案例
text_color文本颜色color类型可以直接设置色值,也可以引用color资源。ohos:text_color="#A8FFFFFF"ohos:text_color="$color:black"

代码演示:

<Text
      ohos:id="$+id:text"
      ohos:height="match_content"
      ohos:width="match_content"
      ohos:text="blue"
      ohos:text_size="100px"
      ohos:text_color="blue"
      />
复制代码

演示效果:

使用HEX效果:

2.4 text_font

属性名称中文描述取值取值说明使用案例
text_font字体sans-serif可以设置的字体如表中所列。ohos:text_font="HwChinese-medium"
sans-serif-medium
HwChinese-medium
sans-serif-condensed
sans-serif-condensed-medium
monospace

代码演示:

<Text
      ohos:id="$+id:text"
      ohos:height="match_content"
      ohos:width="match_content"
      ohos:text="李子捌"
      ohos:text_size="100px"
      ohos:text_color="#000000"
      ohos:text_font="HwChinese-medium"
      />
复制代码

演示效果:

2.5 italic

属性名称中文描述取值取值说明使用案例
italic文本是否斜体字体boolean类型可以直接设置true/false,也可以引用boolean资源。ohos:italic="true"ohos:italic="$boolean:true"

代码演示:

<Text
      ohos:id="$+id:text"
      ohos:height="match_content"
      ohos:width="match_content"
      ohos:text="李子捌"
      ohos:text_size="100px"
      ohos:text_color="#000000"
      ohos:text_font="sans-serif"
      ohos:italic="true"
      />
复制代码

演示效果:

2.6 text_weight

属性名称中文描述取值取值说明使用案例
text_weight字重integer类型表示字体大小的integer类型。也可以引用integer资源。ohos:text_weight="100"ohos:text_weight="$integer:100"

代码演示:

    <Text
        ohos:id="$+id:text"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:text="Liziba"
        ohos:text_size="100px"
        ohos:text_color="#0000FF"
        ohos:text_font="serif"
        ohos:italic="true"
        ohos:text_weight="100"
        />
复制代码

演示效果:

text_weight = 100

text_weight = 600

2.7 background_element

常用的背景如常见的文本背景、按钮背景,可以采用XML格式放置在graphic目录下。

在Project窗口,打开“entry > src > main > resources > base”,右键点击“graphic”文件夹,选择“New > File”,命名为“background_text.xml”,在background_text.xml中定义文本的背景。


代码演示:

<?xml version="1.0" encoding="UTF-8" ?>
<shape xmlns:ohos="http://schemas.huawei.com/res/ohos"
       ohos:shape="rectangle">

    <!--设置圆角弧度-->
    <corners ohos:radius="20px"/>
    <!--设置背景色-->
    <solid ohos:color="#878787"/>

</shape>
复制代码

演示效果:

2.8 text_alignment

属性名称中文描述取值取值说明使用案例
text_alignment文本对齐方式left表示文本靠左对齐。可以设置取值项如表中所列,也可以使用“
top表示文本靠顶部对齐。
right表示文本靠右对齐。
bottom表示文本靠底部对齐。
horizontal_center表示文本水平居中对齐。
vertical_center表示文本垂直居中对齐。
center表示文本居中对齐。
start表示文本靠起始端对齐。
end表示文本靠结尾端对齐。

代码演示:

<!-- 结合width和height可以很方便的查看text_alignment的效果 -->
<Text
      ohos:id="$+id:text"
      ohos:width="300vp"
      ohos:height="100vp"
      ohos:text="Liziba"
      ohos:text_size="100px"
      ohos:text_color="#0000FF"
      ohos:text_font="serif"
      ohos:italic="true"
      ohos:text_weight="100"
      ohos:left_margin="15vp"
      ohos:bottom_margin="15vp"
      ohos:right_padding="15vp"
      ohos:left_padding="15vp"
      ohos:text_alignment="bottom|horizontal_center"
      ohos:background_element="$graphic:background_text"
      />
复制代码

演示效果:

2.9 multiple_lines

属性名称中文描述取值取值说明使用案例
multiple_lines多行模式设置boolean类型可以直接设置true/false,也可以引用boolean资源。ohos:multiple_lines="true"ohos:multiple_lines="$boolean:true"

代码演示:

<!--multiple_lines换行-->
<Text
      ohos:id="$+id:text"
      ohos:width="300px"
      ohos:height="match_content"
      ohos:text="LizibaLiziba"
      ohos:text_size="100px"
      ohos:text_color="#0000FF"
      ohos:text_font="serif"
      ohos:italic="true"
      ohos:text_weight="100"
      ohos:max_text_lines="2"
      ohos:multiple_lines="true"
      ohos:background_element="$graphic:background_text"
      />
复制代码

演示效果:

2.10 max_text_lines

属性名称中文描述取值取值说明使用案例
max_text_lines文本最大行数integer类型可以直接设置整型数值,也可以引用integer资源。ohos:max_text_lines="2"ohos:max_text_lines="$integer:two"

代码演示:

<!--
    multiple_lines 换行
    max_text_lines 最多展示行数
    LizibaLizibaLiziba 三个只展示了2行
    -->
<Text
      ohos:id="$+id:text"
      ohos:width="300px"
      ohos:height="match_content"
      ohos:text="LizibaLizibaLiziba"
      ohos:text_size="100px"
      ohos:text_color="#0000FF"
      ohos:text_font="serif"
      ohos:italic="true"
      ohos:text_weight="100"
      ohos:multiple_lines="true"
      ohos:max_text_lines="2"
      ohos:background_element="$graphic:background_text"
      />
复制代码

演示效果:

2.11 auto_font_size

属性名称中文描述取值取值说明使用案例
auto_font_size是否支持文本自动调整文本字体大小boolean类型可以直接设置true/false,也可以引用boolean资源。ohos:auto_font_size="true"ohos:auto_font_size="$boolean:true"

代码演示:

方法一:

<!--
        auto_font_size 自动调节文字大小
        max_text_lines="1" 我这里设置行数为1,就非常容易展示效果
    -->
<Text
      ohos:id="$+id:text"
      ohos:width="300px"
      ohos:height="match_content"
      ohos:text="LizibaLizibaLiziba"
      ohos:text_size="100px"
      ohos:text_color="#0000FF"
      ohos:text_font="serif"
      ohos:italic="true"
      ohos:text_weight="100"
      ohos:max_text_lines="1"
      ohos:auto_font_size="true"
      ohos:background_element="$graphic:background_text"
      />
复制代码

演示效果:

方法二:

<!--
        auto_font_size 自动调节文字大小
        max_text_lines="1" 我这里设置行数为1,就非常容易展示效果
    -->
<Text
      ohos:id="$+id:text"
      ohos:width="300px"
      ohos:height="match_content"
      ohos:text="L"
      ohos:text_size="100px"
      ohos:text_color="#0000FF"
      ohos:text_font="serif"
      ohos:italic="true"
      ohos:text_weight="100"
      ohos:max_text_lines="1"
      ohos:auto_font_size="true"
      ohos:background_element="$graphic:background_text"
      />
复制代码
package com.liziba.demo.slice;

import com.liziba.demo.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.agp.components.Component;
import ohos.agp.components.Text;

public class MainAbilitySlice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);

        // 每次点击修改内容,演示字体的自动调整
        Text text = (Text) this.findComponentById(ResourceTable.Id_text);
        text.setClickedListener(component -> {
            text.setText(text.getText() + "L");
        });
    }
}
复制代码

演示效果:

开始点击前

连续点击后

2.12 AutoScrolling

当文本过长时,可以设置跑马灯效果,实现文本滚动显示。前提是文本换行关闭且最大显示行数为1,默认情况下即可满足前提要求。

代码演示:

<Text
      ohos:id="$+id:text"
      ohos:width="300px"
      ohos:height="match_content"
      ohos:text="LizibaLizibaLizibaLiziba"
      ohos:text_size="100px"
      ohos:text_color="#0000FF"
      ohos:text_font="serif"
      ohos:italic="true"
      ohos:text_weight="100"
      ohos:background_element="$graphic:background_text"
      />
复制代码
package com.liziba.demo.slice;

import com.liziba.demo.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Component;
import ohos.agp.components.Text;

public class MainAbilitySlice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);

        Text text = (Text) this.findComponentById(ResourceTable.Id_text);
        // 跑马灯效果
        text.setTruncationMode(Text.TruncationMode.AUTO_SCROLLING);
        // 始终处于自动滚动状态
        text.setAutoScrollingCount(Text.AUTO_SCROLLING_FOREVER);
        //启动跑马灯效果
        text.startAutoScrolling();
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }

}
复制代码

演示效果:

分类:
后端
标签: