0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

了解鸿蒙OS Text组件

王程 来源:jf_75796907 作者:jf_75796907 2024-01-29 15:24 次阅读

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

使用 Text

  • 创建 Text
 < Text
      ohos:id="$+id:text"
      ohos:width="match_content"
      ohos:height="match_content"
      ohos:text="Text"
      ohos:background_element="$graphic:color_gray_element"/ >

color_gray_element.xml:

< ?xml version="1.0" encoding="utf-8"? >
  < shape xmlns:ohos="http://schemas.huawei.com/res/ohos"
      ohos:shape="rectangle" >
      < solid
          ohos:color="#ff888888"/ >
  < /shape >

图1 创建一个 Text

wKgZomW3UjaAef3fAAAK17FtnBA942.png
  • 设置背景

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

在“Project”窗口,打开“entry > src > main > resources > base”,右键点击“base”文件夹,选择“New > Directory”,命名为“graphic”。右键点击“graphic”文件夹,选择“New > File”,命名为“textelement.xml”。

图2 创建 textelement.xml 文件后的 resources 目录结构

wKgZomW3UkGALWbVAAANx0SFUJ0260.png

在 textelement.xml 中定义文本的背景:

< ?xml version="1.0" encoding="utf-8"? >
  < shape xmlns:ohos="http://schemas.huawei.com/res/ohos"
      ohos:shape="rectangle" >
      < corners
          ohos:radius="20"/ >
      < solid
          ohos:color="#ff888888"/ >
  < /shape >

在 first_layout.xml 中引用上面定义的文本背景:

 < Text
      ohos:id="$+id:text"
      ohos:width="match_content"
      ohos:height="match_content"
      ohos:text="Text"
      ohos:background_element="$graphic:textelement"/ >
  • 设置字体大小和颜色
 < Text
      ohos:id="$+id:text"
      ohos:width="match_content"
      ohos:height="match_content"
      ohos:text="Text"
      ohos:text_size="28fp"
      ohos:text_color="blue"
      ohos:left_margin="15vp"
      ohos:bottom_margin="15vp"
      ohos:right_padding="15vp"
      ohos:left_padding="15vp"
      ohos:background_element="$graphic:textelement"/ >

图3 设置字体大小和颜色的效果

wKgaomW3UkmAMZJgAAAymRvdEQk800.png
  • 设置字体风格和字重
 < Text
      ohos:id="$+id:text"
      ohos:width="match_content"
      ohos:height="match_content"
      ohos:text="Text"
      ohos:text_size="28fp"
      ohos:text_color="blue"
      ohos:italic="true"
      ohos:text_weight="700"
      ohos:text_font="serif"
      ohos:left_margin="15vp"
      ohos:bottom_margin="15vp"
      ohos:right_padding="15vp"
      ohos:left_padding="15vp"
      ohos:background_element="$graphic:textelement"/ >

图4 设置字体风格和字重的效果

wKgaomW3UlCANmg-AAA8x44CM_g871.png
  • 设置文本对齐方式
< Text
      ohos:id="$+id:text"
      ohos:width="300vp"
      ohos:height="100vp"
      ohos:text="Text"
      ohos:text_size="28fp"
      ohos:text_color="blue"
      ohos:italic="true"
      ohos:text_weight="700"
      ohos:text_font="serif"
      ohos:left_margin="15vp"
      ohos:bottom_margin="15vp"
      ohos:right_padding="15vp"
      ohos:left_padding="15vp"
      ohos:text_alignment="horizontal_center|bottom"
      ohos:background_element="$graphic:textelement"/ >

图5 设置文本对齐方式的效果

wKgaomW3UliAf_6hAABEFZRvNuQ113.png
  • 设置文本换行和最大显示行数
 < Text
      ohos:id="$+id:text"
      ohos:width="75vp"
      ohos:height="match_content"
      ohos:text="TextText"
      ohos:text_size="28fp"
      ohos:text_color="blue"
      ohos:italic="true"
      ohos:text_weight="700"
      ohos:text_font="serif"
      ohos:multiple_lines="true"
      ohos:max_text_lines="2"
      ohos:background_element="$graphic:textelement"/ >

图6 设置文本换行和最大显示行数的效果

wKgaomW3Ul2ATQsUAABwBj0KWcU965.png

自动调节字体大小

Text对象支持根据文本长度自动调整文本的字体大小和换行。

  • 设置自动换行、最大显示行数和自动调节字体大小。
 < Text
       ohos:id="$+id:text1"
       ohos:width="90vp"
       ohos:height="match_content"
       ohos:min_height="30vp"
       ohos:text="T"
       ohos:text_color="blue"
       ohos:italic="true"
       ohos:text_weight="700"
       ohos:text_font="serif"
       ohos:multiple_lines="true"
       ohos:max_text_lines="1"
       ohos:auto_font_size="true"
       ohos:right_padding="8vp"
       ohos:left_padding="8vp"
       ohos:background_element="$graphic:textelement"/ >
  • 通过 setAutoFontSizeRule 设置自动调整规则,三个入参分别是最小的字体大小、最大的字体大小、每次调整文本字体大小的步长。
  // 设置自动调整规则
   text.setAutoFontSizeRule(30, 100, 1);
   // 设置点击一次增多一个"T"
   text.setClickedListener(new Component.ClickedListener() {
       @Override
       public void onClick(Component Component) {
           text.setText(text.getText() + "T");
       }
   });

图7 自动调节字体大小

wKgZomW3UmWAMkKSAAtBmTKpUk4019.png

跑马灯效果

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

< Text
    ohos:id="$+id:text"
    ohos:width="75vp"
    ohos:height="match_content"
    ohos:text="TextText"
    ohos:text_size="28fp"
    ohos:text_color="blue"
    ohos:italic="true"
    ohos:text_weight="700"
    ohos:text_font="serif"
    ohos:background_element="$graphic:textelement"/ >
// 跑马灯效果
text.setTruncationMode(Text.TruncationMode.AUTO_SCROLLING);
// 启动跑马灯效果
text.startAutoScrolling();

图8 跑马灯效果

wKgZomW3UmqAQRdBAAPOpmdI69U338.png

场景示例

利用文本组件实现一个标题栏和详细内容的界面。

图9 界面效果

wKgZomW3Um6ARuINAAAmNqcr3gw108.png

源码示例:

< ?xml version="1.0" encoding="utf-8"? >
< DependentLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:width="match_parent"
    ohos:height="match_content"
    ohos:background_element="$graphic:color_light_gray_element" >
    < Text
        ohos:id="$+id:text1"
        ohos:width="match_parent"
        ohos:height="match_content"
        ohos:text_size="25fp"
        ohos:top_margin="15vp"
        ohos:left_margin="15vp"
        ohos:right_margin="15vp"
        ohos:background_element="$graphic:textelement"
        ohos:text="Title"
        ohos:text_weight="1000"
        ohos:text_alignment="horizontal_center"/ >
    < Text
        ohos:id="$+id:text3"
        ohos:width="match_parent"
        ohos:height="120vp"
        ohos:text_size="25fp"
        ohos:background_element="$graphic:textelement"
        ohos:text="Content"
        ohos:top_margin="15vp"
        ohos:left_margin="15vp"
        ohos:right_margin="15vp"
        ohos:bottom_margin="15vp"
        ohos:text_alignment="center"
        ohos:below="$id:text1"
        ohos:text_font="serif"/ >
< /DependentLayout >

color_light_gray_element.xml:

< ?xml version="1.0" encoding="utf-8"? >
< shape xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:shape="rectangle" >
    < solid
        ohos:color="#ffeeeeee"/ >
< /shape >

textelement.xml:

< ?xml version="1.0" encoding="utf-8"? >
< shape xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:shape="rectangle" >
    < corners
        ohos:radius="20"/ >
    < solid
        ohos:color="#ff888888"/ >
< /shape >

审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HarmonyOS
    +关注

    关注

    79

    文章

    1853

    浏览量

    29266
  • 鸿蒙OS
    +关注

    关注

    0

    文章

    147

    浏览量

    4279
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发基础-Web组件之cookie操作

    : CookieOperation.VERIFY_COOKIE, isNeedDivider: false }) } ... } ... 自定义组件LinkButton由Text组件和Divider分隔器
    发表于 01-14 21:31

    了解鸿蒙os的生态问题!

    我们知道,从第一部智能机诞生到现在,android系统充满了各个角落,也对应产生了职业岗位,比如:android应用开发工程师、android系统裁剪工程师 等等。 那咱们鸿蒙os在智能机普及上
    发表于 09-08 16:32

    文本组件 - Text 精华

    文本组件是我们最常用的组件之一,它是用来在UI界面上显示字符串。作为基本组件,有很多扩展,常见的有按钮组件Button、文本编辑组件Text
    发表于 12-03 23:03

    鸿蒙os系统是什么意思 鸿蒙os系统有什么作用

    大家都很熟悉华为,那么华为近年新研发出来的鸿蒙os系统是什么意思?下面与大家分享华为鸿蒙os系统是什么意思的教程。鸿蒙
    发表于 12-17 11:34

    请问鸿蒙的JS UI如何获得当前组件的Value的值?

    鸿蒙的JS UI如何获得当前组件的Value的值和,自定义一个属性customeVal的值{{title}}此处不一定是Button,有可能是Text,Image,也有可能是list的for循环
    发表于 04-07 11:52

    鸿蒙 OS 应用开发初体验

    的操作系统平台和开发框架。HarmonyOS 的目标是实现跨设备的无缝协同和高性能。 DevEco Studio 对标 Android Studio,开发鸿蒙 OS 应用的 IDE。 启动页面
    发表于 11-02 19:38

    鸿蒙OS的划时代意义 鸿蒙OS的精髓是“分布式”

    华为鸿蒙OS 2.0的发布,无疑是这几天的热门话题。也许,若干年后我们再回头看,发觉鸿蒙OS 2.0的确是这个万物互联、万物智能时代的一个里程碑! 华为历时8年,精心打磨的
    的头像 发表于 09-15 11:38 2458次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b>的划时代意义 <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b>的精髓是“分布式”

    鸿蒙os支持机型有哪些 鸿蒙os支持机型名单

    鸿蒙os支持OTA在线升级机型名单
    的头像 发表于 06-03 15:06 27.9w次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>os</b>支持机型有哪些 <b class='flag-5'>鸿蒙</b><b class='flag-5'>os</b>支持机型名单

    鸿蒙OS与Lite OS的区别是什么

    鸿蒙OS鸿蒙OS面向未来、面向全场景、分布式。在单设备系统能力基础上,鸿蒙OS提出了基于同一套系
    的头像 发表于 12-24 12:40 3913次阅读

    鸿蒙OS千呼万唤始出来

    从2019年在华为开发者大会上公布鸿蒙OS开始,围绕着鸿蒙OS的话题始终没有停止过,而华为也坚持不懈地为鸿蒙
    的头像 发表于 06-01 15:56 2337次阅读

    鸿蒙os怎么升级

    6月2日,华为正式发布了鸿蒙armonyOS 2系统,那么鸿蒙os如何升级?现将鸿蒙os升级方式告知如下。
    的头像 发表于 06-08 16:26 2488次阅读

    鸿蒙os系统 支持哪些手机

    6月2日晚华为鸿蒙OS正式发布, 华为鸿蒙系统首批支持上百款机型升级,这件代表着鸿蒙OS推出拥有之初便与Android、iOS形成了三角鼎足
    的头像 发表于 06-15 10:57 1.7w次阅读

    鸿蒙os2.0系统官网

    的全新芯片,更多个性化操作的推出会让用户们更加舒适的使用鸿蒙2.0系统。 鸿蒙2.0系统介绍:DFX 鸿蒙os2.0系统官网下载,为不同的硬件架构和资源提供了基于
    的头像 发表于 06-21 20:32 9209次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>os</b>2.0系统官网

    鸿蒙os底层是安卓吗

    鸿蒙os底层是安卓系统吗?答案显然是否定的。根据小编的求证了解发现,华为的鸿蒙操作系统只有一半是鸿蒙系统底层,而另一半却是安卓系统的底层。
    的头像 发表于 07-06 09:11 1w次阅读

    鸿蒙OS和开源鸿蒙什么关系?

    内核,其他功能都以模块的形式存在。     华为用的是鸿蒙OS 我们都知道,华为手机的鸿蒙OS是可以运行安卓软件的,是因为系统中有安卓兼容层,所以可以简单这么理解:
    的头像 发表于 01-30 15:44 388次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b>和开源<b class='flag-5'>鸿蒙</b>什么关系?