天天看點

#沖刺創作新星# #深入淺出學習eTs#(六)編寫eTs第一個控件Text:官方文檔Button:官方文檔

本項目Gitee倉位址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)

一、控件基本屬性

在使用第一個控件前,我們需要了解一些控件都有哪些基礎屬性,比如說我們在Super Visual中使用過的長寬和字型大小等等,通用屬性有以下這些:

名稱 參數說明 預設值 描述
width Length - 設定元件自身的寬度,預設時使用元素自身内容需要的寬度。
height Length - 設定元件自身的高度,預設時使用元素自身内容需要的高度。
size { width?: Length, height?: Length } - 設定高寬尺寸。
padding { top?: Length, right?: Length, bottom?: Length, left?: Length } | Length 設定内邊距屬性。 參數為Length類型時,四個方向内邊距同時生效。
margin { top?: Length, right?: Length, bottom?: Length, left?: Length } | Length 設定外邊距屬性。 參數為Length類型時,四個方向外邊距同時生效。
constraintSize { minWidth?: Length, maxWidth?: Length, minHeight?: Length, maxHeight?: Length } { minWidth: 0, maxWidth: Infinity, minHeight: 0, maxHeight: Infinity } 設定限制尺寸,元件布局時,進行尺寸範圍限制。
layoutWeight number 容器尺寸确定時,元素與兄弟節點主軸布局尺寸按照權重進行配置設定,忽略本身尺寸設定。 > 說明: > 僅在Row/Column/Flex布局中生效。

通過這些可以對元件的大小,元件内,元件外以及聯合邊距的内容進行調整。

這裡再引入一個強制位移(之後可能會多次用到)

名稱 參數類型 預設值 描述
align Alignment Center 設定元素内容的對齊方式,隻有當設定的width和height大小超過元素本身内容大小時生效。
direction Direction Auto 設定元素水準方向的布局,可選值參照Direction枚舉說明。
position { x: Length, y: Length } - 使用絕對定位,設定元素錨點相對于父容器頂部起點偏移位置。在布局容器中,設定該屬性不影響父容器布局,僅在繪制時進行位置調整。
markAnchor { x: Length, y: Length } { x: 0, y: 0 } 設定元素在位置定位時的錨點,以元素頂部起點作為基準點進行偏移。
offset { x: Length, y: Length } { x: 0, y: 0 } 相對布局完成位置坐标偏移量,設定該屬性,不影響父容器布局,僅在繪制時進行位置調整。

二、标簽控件

Text:官方文檔

顯示一段文本的元件。

在之前的拖拽式UI中我們已經使用過了該控件,通過修改Content屬性即可達到修改文本内容的效果,他的其它屬性太多了,這裡可以看上面的官方文檔。

#沖刺創作新星# #深入淺出學習eTs#(六)編寫eTs第一個控件Text:官方文檔Button:官方文檔

如上圖,eTs控件的基本調用方式是

interface TextInterface {
  (content?: string | Resource): TextAttribute;
}
           

即首先聲明一下我們是使用的什麼控件(标簽、按鈕、繪畫等等),然後在下面通過點+内容的形式,對基本屬性進行說明,如上對字型大小和背景顔色實作了說明。

其中content是顯示的内容:

Text("Hello, eTs")

Text('Hello, LalHan')
  .width('100%')
  .textAlign(TextAlign.Center)

Text('大家一起深入淺出學習eTs,記得關注我')
  .maxLines(1)
  .textOverflow({overflow: TextOverflow.Ellipsis})
           

實作的效果如下圖:

#沖刺創作新星# #深入淺出學習eTs#(六)編寫eTs第一個控件Text:官方文檔Button:官方文檔

三、按鈕控件

Button:官方文檔

按鈕元件,可快速建立不同樣式的按鈕。

interface ButtonInterface {
  (): ButtonAttribute;
  (options: ButtonOptions): ButtonAttribute;
  (label: ResourceStr, options?: ButtonOptions): ButtonAttribute;
}
           

其中顯示内容主要由label控制

Button('學習ets')
          .height(60)
          .width(200)
          .fontSize(30)
          .backgroundColor('#aabbcc')
           

四、組合應用

本章節把Text和Button會結合起來,實作一個點選改變數字的Demo

此時按鈕需要引入一個點選屬性

事件

名稱 支援冒泡 功能描述
onClick(callback: (event?: ClickEvent) => void) 點選動作觸發該方法調用,event參數見ClickEvent介紹。

ClickEvent對象說明

屬性名稱 類型 描述
screenX number 點選點相對于裝置螢幕左邊沿的X坐标。
screenY number 點選點相對于裝置螢幕上邊沿的Y坐标。
x number 點選點相對于被點選元素左邊沿的X坐标。
y number 點選點相對于被點選元素上邊沿的Y坐标。
target8+ EventTarget 被點選元素對象。
timestamp number 事件時間戳。

在上面的程式中加入一個onclik()

Button('學習ets')
          .height(60)
          .width(200)
          .fontSize(30)
          .backgroundColor('#aabbcc')
          .onClick(() => {
          })
           

此時如果想點下按鈕,更改Text的顯示内容,那麼需要把Text的顯示内容設定為一個變量

@State message: string = '點選我後改變内容'
           
#沖刺創作新星# #深入淺出學習eTs#(六)編寫eTs第一個控件Text:官方文檔Button:官方文檔

這個需要放置在初始化的地方

此時把更改内容的程式加入到按鍵中,将Text的屬性給到變量

Text(this.message)
          .maxLines(2)
          .fontSize(30)
        Button('學習ets')
          .height(60)
          .width(200)
          .fontSize(30)
          .backgroundColor('#aabbcc')
          .onClick(() => {
            this.message = "已經改變了喔"
          })
           
#沖刺創作新星# #深入淺出學習eTs#(六)編寫eTs第一個控件Text:官方文檔Button:官方文檔

在點選後對message的變量進行修改,進行測試

五、測試效果

#沖刺創作新星# #深入淺出學習eTs#(六)編寫eTs第一個控件Text:官方文檔Button:官方文檔

如上方測試,已經實作了動态效果

本文作者:程皖Orz

繼續閱讀