当前位置: 首页 > 科技观察

HarmonyOSCustomView的图文标题_0

时间:2023-03-13 06:59:38 科技观察

更多内容请访问:https://harmonyos.51cto.com与华为官方共建的鸿蒙技术社区介绍在日常项目中,我们可能会遇到一些给标题添加特效或者多行内容+查看更多需求。如果用Text+Image拼接,在复杂的多“标签”场景下会比较生硬。因此,基于已有的HarmonyOSText,提供了一种思路。我们需要在T??ext中混合图形和文字。效果演示TextImageTitle简介TextImageTitle是一个自定义控件,用于显示字符串+图片(或任何Component),目前只支持head或tail。privateinttextSize=45;privateColortextColor=newColor(0xff000000);privateintlineHeight=60;privateintmaxTextLines=DEFAULT_LINES;privateintimageLayout;privateintimageResId;privateintimageWidth;privateintimageHeight;privateintimageMarginLeft;privateintimageMarginRight;privateComponentimageComponent;TextImageTitle常用属性TextImageTitle用法在layout目录下的xml文件中创建TextImageTitle组件。1.在headersample中设置图片代码:TextImageTitletextImageTitle=(TextImageTitle)findComponentById(ResourceTable.Id_text0);TextImageTitle.Parameterparameter=newTextImageTitle.Parameter().setMaxTextLines(1).setImageLayout(TextImageTitle.LAYOUT_FRONT).setImageResId(ResourceTable.Media_icon_notice).set50Height(80).setTextSize).setImageWidth(100).setImageHeight(80).setImageMarginRight(30).setImageMarginLeft(0);textImageTitle.setParameter(parameter);textImageTitle.setText("鸿蒙3.0预计10月22日发布");示例效果:2、最后设置Component示例代码:TextImageTitletextImageTitle=(TextImageTitle)findComponentById(ResourceTable.Id_text1);Componentcomponent=LayoutScatter.getInstance(getContext()).parse(ResourceTable.Layout_icon_tv2,textImageTitle,false);TextImageTitle.Parameterparameter=newTextImageTitle.参数().setMaxTextLines(1).setImageLayout(TextImageTitle.LAYOUT_TAIL).setImageComponent(组件).setLineHeight(70).setTextSize(45).setImageWidth(400).setImageHeight(70).setImageMarginLeft(30);textImageTitle.setParameter(参数);textImageTitle.setText("HarmonyOS图文混合标题!");示例效果:3、设置多行文字结束图片示例代码:TextImageTitletextImageTitle=(TextImageTitle)findComponentById(ResourceTable.Id_text3);TextImageTitle.Parameterparameter=newTextImageTitle.Parameter().setMaxTextLines(3).setImageLayout(TextImageTitle.LAYOUT_TAIL).setImageResId(ResourceTable.Media_icon_more).setImageWidth(70).setImageHeight(70).setLineHeight(70).setTextSize(45).setImageMarginLeft(0).setImageMarginRight(50);textImageTitle.setParameter(参数);textImageTitle.setText(》2021年华为开发者大会将在东莞松山湖举行。根据官方邀请函披露的信息,鸿蒙HarmonyOS3。HarmonyOS2升级用户数已突破1.3亿,华为鸿蒙平均升级用户数OS系统日超1亿根据华为目前的规划,鸿蒙OS系统100台机器的升级计划将在今年12月左右完成");示例效果:4.图片点击事件textImageTitle.setImageClickedListener(()->{L.d("TextImageTitle","imageclick....");//TODOdosomething....});实现思路基于ontraversal字符是否计入换行(详见源码)inttitleLength=title.length();measurePaint.setTextSize(parameter.textSize);intcurLines=1;floatcurWidth=0.0f;intindexEnd=0;booleanisFront=parameter后.imageLayout==LAYOUT_FRONT;//1、遍历字符串for(intindex=0;index