一、字体的几个重要属性

可以按下面顺序书写:

字体<字体族>(fontFamily)、颜色(fontColor)、大小<字号>(fontSize)、粗细<自重值>(fontWeight)、行高(lineHeight)

二、布局的几个重要属性

可以按下面顺序书写:

宽度(width)、高度(height)、圆角半径(borderRadius)、背景颜色(backgroundColor)、透明度(opacity)、
主轴对齐方式<Row和Flex是水平方向、Column是垂直方向>(justifyContent)、交叉轴对齐方式<与主轴方向成90度>(alignItems)、
外部退格<边距>(margin)、边框<边界>(border)、内部退格<填充>(padding)、
分配剩余空间权重(layoutWeight)

布局元素组成

在这里插入图片描述

  • 组件区域(蓝色方块):组件区域表示组件的大小,width、height属性用于设置组件区域的大小。

  • 组件内容区(黄色方块):组件内容区大小为组件区域大小减去组件的border值,组件内容区大小会作为组件内容(或者子组件)进行大小测算时的布局测算限制。

  • 组件内容(绿色方块):组件内容本身占用的大小,比如文本内容占用的大小。组件内容和组件内容区不一定匹配,比如设置了固定的width和height,此时组件内容的大小就是设置的width和height减去padding和border值,但文本内容则是通过文本布局引擎测算后得到的大小,可能出现文本真实大小小于设置的组件内容区大小,也就是文本内容无法占满文本组件提供的内容区大小。当组件内容和组件内容区大小不一致时,align属性生效,定义组件内容在组件内容区的对齐方式,如居中对齐。

  • 组件布局边界(虚线部分):组件通过margin属性设置外边距时,组件布局边界就是组件区域加上margin的大小。

详细参考:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/arkts-layout-development-overview.md

对齐方式

// 水平方向
HorizontalAlign.Start			左边对齐
HorizontalAlign.Center			居中对齐
HorizontalAlign.End				右边对齐
// 竖直方向
VerticalAlign.Top				顶部对齐
VerticalAlign.Center			居中对齐
VerticalAlign.Bottom			底部对齐
// 主轴方向
FlexAlign.Start					主轴向左对齐
FlexAlign.Center
FlexAlign.End
FlexAlign.SpaceBetween			第一个元素紧贴容器左边缘,最后一个元素紧贴容器右边缘。中间的间距相等,但首尾没有额外间距。A [空格] B [空格] C
FlexAlign.SpaceAround			每个元素的左右两侧都分配相同的空白空间。首尾元素距离容器边缘的距离,等于元素之间间距的一半。[空格] A [空格] B [空格] C [空格]
FlexAlign.SpaceEvenly			所有空白空间(包括容器边缘和元素之间)都完全均匀分配。视觉上所有间距看起来都完全一样,非常对称。[空格] A [空格] B [空格] C [空格]
// 核心区别在于“空白空间”是如何分配的。

  • 在 ArkUI 中,FlexAlign 用于 Container(如 Row、Column、Flex)的主轴对齐。

  • HorizontalAlign 通常用于 Text、Image 等组件的内容对齐,或者在特定场景下作为交叉轴对齐的辅助。

三、TextInput的几个重要属性

.enabled(false)						// 禁用,整体变灰
.focusable(false)					// 不聚焦,也无法修改内容
.focusOnTouch(false)				// 单击、双击不聚焦,但长按可以聚焦,从而可以修改内容
.defaultFocus(false)				// 初始时默认非聚焦状态
.enableKeyboardOnFocus(false)		// 聚焦时不拉起软键盘
.onWillChange((change: EditableTextChangeValue) => {
  return false						// 不允许修改控件的输入内容,但可以复制
})
.onChange((value: string) => {
  this.inputText = value			// 输入内容时触发
})
.onSubmit((value: string) => {		// 提交内容时触发
  // value 是用户输入的字符串
  console.info('提交的内容是: ' + value)
  // 在这里执行你的业务逻辑,比如搜索、保存等
})

举例:

        TextInput({
          text: this.fixedPath
        })
          .type(InputType.Normal)
          .fontFamily('HarmonyHeiTi')
          .fontColor($r('sys.color.font_primary'))
          .fontSize($r('sys.float.Body_L'))
          .fontWeight(FontWeight.Normal)
          .lineHeight(21)
          .width(604)
          .height(40)
          .borderRadius(8)
          .backgroundColor($r('sys.color.comp_background_tertiary'))
          .layoutWeight(1)
          .defaultFocus(false) // 默认失焦
          .focusOnTouch(false) // 单击、双击不聚焦
          .enableKeyboardOnFocus(false) // 获焦时,不拉起软键盘
          .onWillChange((change: EditableTextChangeValue) => {
            return false // 不允许更改
          })

参考文档:https://docs.openharmony.cn/pages/v6.1/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-textinput.md#onsubmit

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐