精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

HarmonyOS 自定義View之圖文標題

開發 OpenHarmony
日常項目中,我們可能會碰到一些標題加特效或多行內容+查看更多的需求,根據現有的HarmonyOS Text提供了一種思路實現了圖文標題,我們需要在Text中進行圖文混排。

[[430555]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

簡介

日常項目中,我們可能會碰到一些標題加特效或多行內容+查看更多的需求,如果使用Text+Image這樣去拼接的話,在復雜多“標簽”場景就實現起來比較呆板,于是根據現有的HarmonyOS Text提供了一種思路實現了圖文標題,我們需要在Text中進行圖文混排。

效果演示

#星光計劃1.0#HarmonyOS 自定義View之圖文標題-鴻蒙HarmonyOS技術社區

TextImageTitle介紹

TextImageTitle是用來顯示字符串+圖片(或任意Component)的自定義控件,目前只支持頭部或者尾部。

  1. private int textSize = 45; 
  2. private Color textColor = new Color(0xff000000); 
  3. private int lineHeight = 60; 
  4. private int maxTextLines = DEFAULT_LINES; 
  5. private int imageLayout; 
  6. private int imageResId; 
  7. private int imageWidth; 
  8. private int imageHeight; 
  9. private int imageMarginLeft; 
  10. private int imageMarginRight; 
  11. private Component imageComponent; 

TextImageTitle常用屬性

TextImageTitle用法

在layout目錄下的xml文件中創建TextImageTitle組件。

  1. <com.pvj.textimagetitlelibrary.TextImageTitle 
  2.     ohos:id="$+id:text0" 
  3.     ohos:height="match_content" 
  4.     ohos:width="match_parent" 
  5.     ohos:padding="10vp" 
  6.     /> 

1、設置圖片在頭部

示例代碼:

  1. TextImageTitle textImageTitle = (TextImageTitle) findComponentById(ResourceTable.Id_text0); 
  2. TextImageTitle.Parameter parameter = new TextImageTitle.Parameter(). 
  3.         setMaxTextLines(1). 
  4.         setImageLayout(TextImageTitle.LAYOUT_FRONT). 
  5.         setImageResId(ResourceTable.Media_icon_notice). 
  6.         setLineHeight(80). 
  7.         setTextSize(50). 
  8.         setImageWidth(100).setImageHeight(80). 
  9.         setImageMarginRight(30). 
  10.         setImageMarginLeft(0); 
  11. textImageTitle.setParameter(parameter); 
  12. textImageTitle.setText("鴻蒙3.0有望在10月22日發布"); 

示例效果:

#星光計劃1.0#HarmonyOS 自定義View之圖文標題-鴻蒙HarmonyOS技術社區

2、設置Component在尾部

示例代碼:

  1. TextImageTitle textImageTitle = (TextImageTitle) findComponentById(ResourceTable.Id_text1); 
  2. Component component = LayoutScatter.getInstance(getContext()).parse(ResourceTable.Layout_icon_tv2, textImageTitle, false); 
  3. TextImageTitle.Parameter parameter = new TextImageTitle.Parameter(). 
  4.         setMaxTextLines(1). 
  5.         setImageLayout(TextImageTitle.LAYOUT_TAIL). 
  6.         setImageComponent(component). 
  7.         setLineHeight(70). 
  8.         setTextSize(45). 
  9.         setImageWidth(400).setImageHeight(70). 
  10.         setImageMarginLeft(30); 
  11. textImageTitle.setParameter(parameter); 
  12. textImageTitle.setText("HarmonyOS 圖文混排標題!"); 

示例效果:

 #星光計劃1.0#HarmonyOS 自定義View之圖文標題-鴻蒙HarmonyOS技術社區

3、設置多行文字尾部圖片

示例代碼:

  1. TextImageTitle textImageTitle = (TextImageTitle) findComponentById(ResourceTable.Id_text3); 
  2. TextImageTitle.Parameter parameter = new TextImageTitle.Parameter(). 
  3.         setMaxTextLines(3). 
  4.         setImageLayout(TextImageTitle.LAYOUT_TAIL). 
  5.         setImageResId(ResourceTable.Media_icon_more). 
  6.         setImageWidth(70).setImageHeight(70). 
  7.         setLineHeight(70). 
  8.         setTextSize(45). 
  9.         setImageMarginLeft(0). 
  10.         setImageMarginRight(50); 
  11. textImageTitle.setParameter(parameter); 
  12. textImageTitle.setText("華為開發者大會2021將在東莞松山湖舉辦,根據官方邀請函上透露出來的信息,鴻蒙HarmonyOS 3.0、HMS Core 6、全屋智能等黑科技也將悉數亮相鴻蒙HarmonyOS 2升級用戶數量已經突破了1.3億大關,并且華為鴻蒙OS系統目前平均每天升級用戶數量都超過了100百萬,根據華為目前的規劃,鴻蒙OS系統的百機升級計劃將會在今年12月份前后完成。"); 

示例效果:

#星光計劃1.0#HarmonyOS 自定義View之圖文標題-鴻蒙HarmonyOS技術社區

4、圖片單擊事件

  1. textImageTitle.setImageClickedListener(() -> { 
  2.     L.d("TextImageTitle""image click...."); 
  3.     // TODO do something.... 
  4. }); 

實現思路

根據遍歷字符計算是否換行(細節請查看源代碼)

  1. int titleLength = title.length(); 
  2. measurePaint.setTextSize(parameter.textSize); 
  3. int curLines = 1; 
  4. float curWidth = 0.0f; 
  5. int indexEnd = 0; 
  6.  
  7. //判斷圖文在前 還是在后 
  8. boolean isFront = parameter.imageLayout == LAYOUT_FRONT; 
  9.  // 1,遍歷字符串 
  10. for (int index = 0; index < titleLength; index++) { 
  11.       String c = String.valueOf(title.charAt(index)); 
  12.       float vW = measurePaint.measureText(c); 
  13.       curWidth += vW; 
  14.      
  15.     //  一些行數 或每行寬度判斷示例 頭尾判斷 
  16.     if (lineWidth < curWidth) { 
  17.         // ..... 省略大量代碼 
  18.     } 
  19.      
  20.     if (lineWidth < curWidth + imageTotalWidth) { 
  21.        // ..... 省略大量代碼 
  22.     } 
  23.      
  24.    if (isFront && curLines == 1) { 
  25.       // ..... 省略大量代碼  
  26.    } 
  27.     ... 

繪制文字

  1. private void createText(String text) { 
  2.     // Text內容創建并且加到容器上 
  3.     Text titleText = new Text(getContext()); 
  4.     titleText.setTextSize(parameter.textSize); 
  5.     titleText.setTextColor(parameter.textColor); 
  6.     addComponent(titleText, ComponentContainer.LayoutConfig.MATCH_PARENT, parameter.lineHeight); 
  7.     titleText.setText(text); 

 繪制圖文

  1. private void createTextAndImage(String text, int maxTextWidth, boolean isFront) { 
  2.        //創建一個圖片和文字的容器 
  3.        DirectionalLayout directionalLayout = new DirectionalLayout(getContext()); 
  4.        directionalLayout.setOrientation(ComponentContainer.HORIZONTAL); 
  5.        directionalLayout.setAlignment(LayoutAlignment.VERTICAL_CENTER); 
  6.        Text titleText = new Text(getContext()); 
  7.        titleText.setTextSize(parameter.textSize); 
  8.        titleText.setTextColor(parameter.textColor); 
  9.         // 文字的最大長度,決定尾部是否顯示...;不限制有情況是Image出邊界 
  10.        titleText.setMaxTextWidth(maxTextWidth); 
  11.        titleText.setMultipleLine(false); 
  12.        titleText.setTruncationMode(Text.TruncationMode.ELLIPSIS_AT_END); 
  13.        titleText.setText(text); 
  14.  
  15.        Component component = getImage(text); 
  16.        // 點擊事件 
  17.        component.setClickedListener(new ClickedListener() { 
  18.            @Override 
  19.            public void onClick(Component component) { 
  20.                if (listener != null) { 
  21.                    listener.onClick(); 
  22.                } 
  23.            } 
  24.        }); 
  25.  
  26.        //判斷圖片在前還是在后 
  27.        if (isFront) { 
  28.            if (component != null) { 
  29.                directionalLayout.addComponent(component); 
  30.            } 
  31.            directionalLayout.addComponent(titleText, ComponentContainer.LayoutConfig.MATCH_CONTENT,                                                           ComponentContainer.LayoutConfig.MATCH_PARENT); 
  32.        } else { 
  33.            directionalLayout.addComponent(titleText, ComponentContainer.LayoutConfig.MATCH_CONTENT,                                                           ComponentContainer.LayoutConfig.MATCH_PARENT); 
  34.            if (component != null) { 
  35.                directionalLayout.addComponent(component); 
  36.            } 
  37.        } 
  38.        addComponent(directionalLayout, ComponentContainer.LayoutConfig.MATCH_PARENT, parameter.lineHeight); 
  39.    } 
  40.  
  41.    private Component getImage(String text) { 
  42.         // 自定義Component優先 
  43.        if (parameter.imageComponent != null) { 
  44.            parameter.imageComponent.setComponentSize(parameter.imageWidth, parameter.imageHeight); 
  45.            parameter.imageComponent.setMarginLeft(parameter.imageMarginLeft); 
  46.            parameter.imageComponent.setMarginRight(parameter.imageMarginRight); 
  47.            return parameter.imageComponent; 
  48.        } else if (parameter.imageResId != 0) {   
  49.           //圖文 
  50.            Image image = new Image(getContext()); 
  51.            image.setComponentSize(parameter.imageWidth, parameter.imageHeight); 
  52.            if (!TextTool.isNullOrEmpty(text)) { 
  53.                image.setMarginLeft(parameter.imageMarginLeft); 
  54.                image.setMarginRight(parameter.imageMarginRight); 
  55.            } 
  56.            image.setScaleMode(Image.ScaleMode.STRETCH); 
  57.            image.setPixelMap(parameter.imageResId); 
  58.            return image; 
  59.        } 
  60.        return null
  61.    } 

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2013-01-06 10:43:54

Android開發View特效

2011-08-02 11:17:13

iOS開發 View

2016-12-26 15:25:59

Android自定義View

2016-11-16 21:55:55

源碼分析自定義view androi

2013-05-20 17:33:44

Android游戲開發自定義View

2016-04-12 10:07:55

AndroidViewList

2017-03-14 15:09:18

AndroidView圓形進度條

2022-06-30 14:02:07

鴻蒙開發消息彈窗組件

2022-07-15 16:45:35

slider滑塊組件鴻蒙

2022-06-20 15:43:45

switch開關鴻蒙

2021-03-09 15:23:45

鴻蒙HarmonyOS應用開發

2017-03-02 13:33:19

Android自定義View

2021-08-16 14:45:38

鴻蒙HarmonyOS應用

2021-11-01 10:21:36

鴻蒙HarmonyOS應用

2021-12-24 15:46:23

鴻蒙HarmonyOS應用

2021-08-25 10:14:51

鴻蒙HarmonyOS應用

2022-07-12 16:56:48

自定義組件鴻蒙

2012-05-18 10:52:20

TitaniumAndroid模塊自定義View模塊

2011-05-04 10:40:02

網頁加載進度標題欄lephone

2021-09-06 14:58:23

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

初高中福利视频网站| 日韩精品无码一区二区三区| 美女av免费看| www.欧美视频| 一区二区成人在线| 精品国产一区二区三区四区精华| 波多野结衣视频网站| 成人看的视频| 日韩精品中文字幕在线一区| 欧美日韩一道本| 国产高清av在线| 国产一区在线看| 7m精品福利视频导航| 刘亦菲国产毛片bd| 国产精品毛片久久久| 日本韩国精品在线| 亚洲国产一二三精品无码 | 无码 人妻 在线 视频| 欧美成人aaa| 五月激情综合婷婷| 亚洲一区二区在线看| 日韩中文字幕免费在线观看| 美女视频网站黄色亚洲| 97国产精品视频| 91动漫免费网站| 五月综合久久| 日韩一二三区视频| 欧美午夜aaaaaa免费视频| 第一av在线| 亚洲欧洲精品一区二区三区不卡 | 男人天堂手机在线观看| 奇米888四色在线精品| 97久久精品人搡人人玩| 国产精品白丝喷水在线观看| 欧美日韩伦理| 日韩精品在线免费观看| 日本美女久久久| 草民电影神马电影一区二区| 精品久久中文字幕久久av| 日韩中文字幕在线不卡| 国产三级在线播放| 国产精品久久久久久久久久久免费看| 久久本道综合色狠狠五月| 999av视频| 久久国产精品第一页| 国产成人精品免费久久久久| 天天做天天爱夜夜爽| 欧美日韩亚洲一区| 久久国产精品久久久久久久久久| 91资源在线播放| 国产精品一区高清| 日韩精品中文字幕在线| 亚洲欧美高清在线| 91蜜桃臀久久一区二区| 日韩免费观看高清完整版| 999在线精品视频| 四虎国产精品永久在线国在线 | 国产精品九色蝌蚪自拍| 日韩av一级大片| 黑人与亚洲人色ⅹvideos| 99re这里只有精品视频首页| 欧美一二区在线观看| 亚洲女厕所小便bbb| 亚洲草草视频| yw视频在线观看| 国产无一区二区| 日本中文不卡| av电影在线网| 国产精品久久久久aaaa樱花 | 欧美高清一级大片| 久久香蕉精品视频| 影音先锋中文字幕一区| 韩日欧美一区二区| 九九精品免费视频| caoporn91| 人人妻人人做人人爽| 精国产品一区二区三区a片| 日韩中文字幕高清在线观看| 日韩在线播放av| 五月天激情丁香| 亚洲色图网站| 国内免费精品永久在线视频| 国产成人愉拍精品久久| 久久中文在线| 国产精品福利在线| 国产精品视频在线观看免费| 久久99精品国产.久久久久| 91青草视频久久| 黄色aaa毛片| 久久精品欧美一区二区三区不卡 | 91精品综合| 久久成人精品一区二区三区| 免看一级a毛片一片成人不卡| 9久re热视频在线精品| 日韩美女视频中文字幕| 一区二区三区www污污污网站| 国产一区二区三区免费在线观看| 国产精品一区二区a| 欧美在线观看在线观看| 国产精品久久久久婷婷二区次| 久久免费一级片| 性国裸体高清亚洲| 欧美日本在线播放| bl动漫在线观看| 久久综合av| 97人人做人人爱| 国产精品久久久久精| 99久久国产综合精品麻豆| 亚洲国产欧洲综合997久久| 免费在线看电影| 色嗨嗨av一区二区三区| 日本女人黄色片| 西瓜成人精品人成网站| 萌白酱国产一区二区| 久久永久免费视频| 国产·精品毛片| 亚洲激情一区二区| 麻豆mv在线看| 日韩视频免费观看高清在线视频| 中文字幕第4页| 亚洲无毛电影| 91精品在线播放| 黄色免费在线播放| 天天射综合影视| 青娱乐国产精品视频| 精品久久久久中文字幕小说| 国产69精品久久久久99| 国产伦精品一区二区三区免.费| 久久综合中文字幕| 精品人妻少妇一区二区| 精品国产三区在线| 中文字幕亚洲欧美| 日韩美一区二区| 99久久免费视频.com| 国内精品国产三级国产99| 日韩一区精品| 亚洲欧美国产精品va在线观看| 欧美日韩国产精品一区二区三区 | 深夜福利网站在线观看| 日韩欧美一区二区三区在线视频| 日韩av电影在线播放| 少妇高潮久久久| 亚洲一二三四在线观看| 成人在线短视频| 香蕉综合视频| 国产综合视频在线观看| 天堂中文а√在线| 欧美日韩一级视频| 你懂得视频在线观看| 日本在线不卡一区| 亚洲v日韩v欧美v综合| 日韩大尺度黄色| 亚洲区在线播放| 日本a级c片免费看三区| 91天堂素人约啪| 黄色免费观看视频网站| 日韩av资源网| 国产91精品久久久| 欧美日韩影视| 91福利精品第一导航| 欧美丰满美乳xxⅹ高潮www| 日韩国产高清在线| 日韩午夜视频在线观看| 狠狠久久伊人中文字幕| 国产一区二区成人| 亚洲天堂视频在线| 亚洲色图19p| 男男受被啪到高潮自述| 欧美/亚洲一区| 国产成人成网站在线播放青青| 欧美hdxxxx| 日韩黄色av网站| 亚洲欧美一二三区| 中文字幕av一区二区三区高| 中文字幕一区久久| 黄色成人精品网站| 国产日产精品一区二区三区四区| av日韩电影| 在线免费看av不卡| 999久久久久久| 亚洲v中文字幕| 自拍偷拍视频亚洲| 久久99国产精品麻豆| 91视频 - 88av| 亚洲成在人线免费观看| 国产精品天天狠天天看| av网站免费在线观看| 亚洲а∨天堂久久精品9966| 91久久国产综合久久91| 18欧美亚洲精品| 97精品人妻一区二区三区蜜桃| 欧美综合二区| 亚洲最大色综合成人av| 亚洲一区网址| 日本欧美在线视频| 国产鲁鲁视频在线观看特色| 亚洲激情在线观看| 在线观看毛片av| 亚洲国产成人精品视频| 偷拍女澡堂一区二区三区| 美女www一区二区| 日韩日韩日韩日韩日韩| 日韩av在线播放网址| 草莓视频一区| 视频在线日韩| 欧美激情小视频| 1769视频在线播放免费观看| 精品国产免费视频| 亚洲在线免费观看视频| 天天影视色香欲综合网老头| 精品国产欧美日韩不卡在线观看| 久久亚洲私人国产精品va媚药| 国产毛片久久久久久| 久久精品一本| 国产一区二区三区小说| 欧美国产偷国产精品三区| 久久精品美女| 影音先锋欧美激情| 国产日韩精品在线播放| 北岛玲heyzo一区二区| 欧美激情在线观看视频| 亚洲s色大片| 亚洲欧美另类在线观看| 黄色aaa大片| 日韩午夜在线播放| 一区二区三区亚洲视频| 色欲综合视频天天天| 国产在线一二区| 综合av第一页| 久久久国产一级片| 久久久激情视频| 中国一级特黄录像播放| 成人午夜免费电影| 午夜影院免费版| 精品一区二区三区免费| 无人在线观看的免费高清视频 | 久久久久久av| av片在线观看| 久久午夜a级毛片| 欧美激情午夜| 日韩中文理论片| 91caoporn在线| 国产午夜精品视频| 国产三级视频在线看| 亚洲欧美国产日韩天堂区| 肉丝一区二区| 日韩经典中文字幕| 深夜影院在线观看| 日韩第一页在线| 欧美捆绑视频| 亚洲视频专区在线| www.亚洲视频| 日韩视频在线一区| 2017亚洲天堂1024| 久久这里有精品视频| 毛片在线看片| 欧美成人在线影院| 调教一区二区| 高清欧美性猛交xxxx黑人猛交| 多野结衣av一区| 热99在线视频| 精品国模一区二区三区| 国产精品第二页| 97精品国产99久久久久久免费| 国产美女久久精品| 日韩大陆av| 99热在线播放| 久久国产精品色av免费看| 欧美久久综合性欧美| 精品视频国产| 女人床在线观看| 在线观看日韩av电影| 亚洲爆乳无码专区| 日本欧美在线观看| 午夜大片在线观看| 成人国产精品免费| 成人免费视频网站入口| 成人精品高清在线视频| 91青草视频久久| 加勒比久久高清| 欧美午夜免费| 水蜜桃久久夜色精品一区| 9色视频在线观看| 亚洲欧美久久| 自拍偷拍一区二区三区四区| 国产精一品亚洲二区在线视频| 69亚洲乱人伦| 欧美—级在线免费片| 三级影片在线看| 狠狠躁18三区二区一区| 亚洲资源在线播放| 精品国产亚洲一区二区三区在线观看| 麻豆导航在线观看| 蜜臀久久99精品久久久无需会员 | 日韩美女视频中文字幕| 精品久久在线| 成人av中文| 欧美精品尤物在线观看| 六月婷婷激情网| 男人天堂欧美日韩| 精品国产乱码久久久久久1区二区| 成人在线视频首页| 久久久精品成人| 一区二区三区四区不卡在线| 二区视频在线观看| 欧美一区日韩一区| 国产日本在线视频| 久久久久久久一区二区三区| 日韩欧美一区二区三区免费观看 | 国产女人18毛片水真多| 亚洲激情在线视频| 国产网站在线免费观看| 国产精品69av| 成午夜精品一区二区三区软件| 五月天婷亚洲天综合网鲁鲁鲁| 伊人久久婷婷| gai在线观看免费高清| 久久久av毛片精品| 精品午夜福利在线观看| 欧美日韩高清不卡| 三级毛片在线免费看| 欧美黄色片在线观看| 欧美日韩卡一| 欧洲一区二区在线| 亚洲毛片一区| 国内自拍偷拍视频| 综合欧美亚洲日本| 国产一级精品毛片| 亚洲精品视频在线观看视频| 福利网站在线观看| 91亚洲国产精品| 99精品全国免费观看视频软件| 日本精品一区在线观看| 成人免费看黄yyy456| 欧美卡一卡二卡三| 欧美日产在线观看| 日本电影全部在线观看网站视频 | 天天干天天色天天爽| 日本麻豆一区二区三区视频| 播金莲一级淫片aaaaaaa| 亚洲成人1区2区| 国产综合视频在线| 久久久久久久91| 在线精品国产亚洲| 精品久久久无码人妻字幂| 国产一本一道久久香蕉| 三级黄色免费观看| 7777精品久久久大香线蕉 | 国产精品久线观看视频| 夜夜躁日日躁狠狠久久av| 亚洲人成网站999久久久综合| 韩国精品一区| 久久艳妇乳肉豪妇荡乳av| 一区二区三区国产盗摄| 国产乱了高清露脸对白| 精品久久久久久久久久久久久久| 色噜噜在线播放| 91sa在线看| 夜夜春成人影院| 乱子伦视频在线看| 国产片一区二区三区| 真实的国产乱xxxx在线91| 日韩在线观看免费全| 亚洲午夜国产成人| 亚洲天堂第一区| 成人av免费在线播放| 久久久久99精品成人片我成大片| 亚洲精品资源在线| 影音成人av| 色香蕉在线观看| 粉嫩久久99精品久久久久久夜| 国产第一页在线播放| 日韩激情在线视频| 成人不卡视频| 青青草综合视频| 26uuu成人网一区二区三区| av毛片在线免费观看| 日韩最新免费不卡| 成人看片黄a免费看视频| 国产男女免费视频| 国产日韩精品久久久| 91精品中文字幕| 久久久久久久久久国产| 制服丝袜日韩| 91性高潮久久久久久久| 亚洲成人激情自拍| www在线播放| 99re在线视频观看| 久久久久久久欧美精品| 日韩一卡二卡在线观看| 亚洲第一福利在线观看| 欧美大片1688网站| 国产片侵犯亲女视频播放| 久久久亚洲国产美女国产盗摄| 亚洲综合五月天婷婷丁香| 国外成人免费在线播放| 日韩精品永久网址| 成年人小视频在线观看| 欧美撒尿777hd撒尿| av日韩中文|