鸿蒙5.0开发进阶:UI框架-线性布局 (Row/Column)

鸿蒙开发笔记(十七): 列表 List 鸿蒙os中List列表组件的使用 阅读详情

线性布局 (Row/Column)

概述

线性布局(LinearLayout)是开发中最常用的布局,通过线性容器Row和Column构建。线性布局是其他布局的基础,其子元素在线性方向上(水平方向和垂直方向)依次排列。线性布局的排列方向由所选容器组件决定,Column容器内子元素按照垂直方向排列,Row容器内子元素按照水平方向排列。根据不同的排列方向,开发者可选择使用Row或Column容器创建线性布局。

图1 Column容器内子元素排列示意图

图2 Row容器内子元素排列示意图

基本概念

  • 布局容器:具有布局能力的容器组件,可以承载其他元素作为其子元素,布局容器会对其子元素进行尺寸计算和布局排列。

  • 布局子元素:布局容器内部的元素。

  • 主轴:线性布局容器在布局方向上的轴线,子元素默认沿主轴排列。Row容器主轴为水平方向,Column容器主轴为垂直方向。

  • 交叉轴:垂直于主轴方向的轴线。Row容器交叉轴为垂直方向,Column容器交叉轴为水平方向。

  • 间距:布局子元素的间距。

布局子元素在排列方向上的间距

在布局容器内,可以通过space属性设置排列方向上子元素的间距,使各子元素在排列方向上有等间距效果。

Column容器内排列方向上的间距

图3 Column容器内排列方向的间距图

Column({ space: 20 }) {
  Text('space: 20').fontSize(15).fontColor(Color.Gray).width('90%')
  Row().width('90%').height(50).backgroundColor(0xF5DEB3)
  Row().width('90%').height(50).backgroundColor(0xD2B48C)
  Row().width('90%').height(50).backgroundColor(0xF5DEB3)
}.width('100%')

Row容器内排列方向上的间距

图4 Row容器内排列方向的间距图

Row({ space: 35 }) {
  Text('space: 35').fontSize(15).fontColor(Color.Gray)
  Row().width('10%').height(150).backgroundColor(0xF5DEB3)
  Row().width('10%').height(150).backgroundColor(0xD2B48C)
  Row().width('10%').height(150).backgroundColor(0xF5DEB3)
}.width('90%')

布局子元素在交叉轴上的对齐方式

在布局容器内,可以通过alignItems属性设置子元素在交叉轴(排列方向的垂直方向)上的对齐方式。且在各类尺寸屏幕中,表现一致。其中,交叉轴为垂直方向时,取值为VerticalAlign类型,水平方向取值为HorizontalAlign。

alignSelf属性用于控制单个子元素在容器交叉轴上的对齐方式,其优先级高于alignItems属性,如果设置了alignSelf属性,则在单个子元素上会覆盖alignItems属性。

Column容器内子元素在水平方向上的排列

图5 Column容器内子元素在水平方向上的排列图

  • HorizontalAlign.Start:子元素在水平方向左对齐。

    Column({}) {
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    }.width('100%').alignItems(HorizontalAlign.Start).backgroundColor('rgb(242,242,242)')

  • HorizontalAlign.Center:子元素在水平方向居中对齐。

    Column({}) {
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    }.width('100%').alignItems(HorizontalAlign.Center).backgroundColor('rgb(242,242,242)')

  • HorizontalAlign.End:子元素在水平方向右对齐。

    Column({}) {
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    }.width('100%').alignItems(HorizontalAlign.End).backgroundColor('rgb(242,242,242)')

Row容器内子元素在垂直方向上的排列

图6 Row容器内子元素在垂直方向上的排列图

  • VerticalAlign.Top:子元素在垂直方向顶部对齐。

    Row({}) {
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    }.width('100%').height(200).alignItems(VerticalAlign.Top).backgroundColor('rgb(242,242,242)')

  • VerticalAlign.Center:子元素在垂直方向居中对齐。

    Row({}) {
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    }.width('100%').height(200).alignItems(VerticalAlign.Center).backgroundColor('rgb(242,242,242)')

  • VerticalAlign.Bottom:子元素在垂直方向底部对齐。

    Row({}) {
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    }.width('100%').height(200).alignItems(VerticalAlign.Bottom).backgroundColor('rgb(242,242,242)')

布局子元素在主轴上的排列方式

在布局容器内,可以通过justifyContent属性设置子元素在容器主轴上的排列方式。可以从主轴起始位置开始排布,也可以从主轴结束位置开始排布,或者均匀分割主轴的空间。

Column容器内子元素在垂直方向上的排列

图7 Column容器内子元素在垂直方向上的排列图

  • justifyContent(FlexAlign.Start):元素在垂直方向方向首端对齐,第一个元素与行首对齐,同时后续的元素与前一个对齐。

    Column({}) {
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    }.width('100%').height(300).backgroundColor('rgb(242,242,242)').justifyContent(FlexAlign.Start)

  • justifyContent(FlexAlign.Center):元素在垂直方向方向中心对齐,第一个元素与行首的距离与最后一个元素与行尾距离相同。

    Column({}) {
      Column() {
      }.width('80%').height(50).backgroundColor(0xF5DEB3)
    
      Column() {
      }.width('80%').height(50).backgroundColor(0xD2B48C)
    
      Column() {
      }.width('80%').height(50).backgroundColor(0xF5DEB3)
    }.width('100%').height(300).backgroundColor('rgb(242,242,242)').justifyContent(FlexAlign.Center)

  • justifyContent(FlexAlign.End):元素在垂直方向方向尾部对齐,最后一个元素与行尾对齐,其他元素与后一个对齐。

    Column({}) {
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    }.width('100%').height(300).backgroundColor('rgb(242,242,242)').justifyContent(FlexAlign.End)

  • justifyContent(FlexAlign.SpaceBetween):垂直方向均匀分配元素,相邻元素之间距离相同。第一个元素与行首对齐,最后一个元素与行尾对齐。

    Column({}) {
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    }.width('100%').height(300).backgroundColor('rgb(242,242,242)').justifyContent(FlexAlign.SpaceBetween)

  • justifyContent(FlexAlign.SpaceAround):垂直方向均匀分配元素,相邻元素之间距离相同。第一个元素到行首的距离和最后一个元素到行尾的距离是相邻元素之间距离的一半。

    Column({}) {
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('80%').height(50).backgroundColor(0xF5DEB3)
    }.width('100%').height(300).backgroundColor('rgb(242,242,242)').justifyContent(FlexAlign.SpaceAround)

  • justifyContent(FlexAlign.SpaceEvenly):垂直方向均匀分配元素,相邻元素之间的距离、第一个元素与行首的间距、最后一个元素到行尾的间距都完全一样。

    Column({}) {
      Column() {
      }.width('80%').height(50).backgroundColor(0xF5DEB3)
    
      Column() {
      }.width('80%').height(50).backgroundColor(0xD2B48C)
    
      Column() {
      }.width('80%').height(50).backgroundColor(0xF5DEB3)
    }.width('100%').height(300).backgroundColor('rgb(242,242,242)').justifyContent(FlexAlign.SpaceEvenly)

Row容器内子元素在水平方向上的排列

图8 Row容器内子元素在水平方向上的排列图

  • justifyContent(FlexAlign.Start):元素在水平方向首端对齐,第一个元素与行首对齐,同时后续的元素与前一个对齐。

    Row({}) {
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    }.width('100%').height(200).backgroundColor('rgb(242,242,242)').justifyContent(FlexAlign.Start)

  • justifyContent(FlexAlign.Center):元素在水平方向中心对齐,第一个元素与行首的距离与最后一个元素与行尾距离相同。

    Row({}) {
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    }.width('100%').height(200).backgroundColor('rgb(242,242,242)').justifyContent(FlexAlign.Center)

  • justifyContent(FlexAlign.End):元素在水平方向尾部对齐,最后一个元素与行尾对齐,其他元素与后一个对齐。

    Row({}) {
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    }.width('100%').height(200).backgroundColor('rgb(242,242,242)').justifyContent(FlexAlign.End)

  • justifyContent(FlexAlign.SpaceBetween):水平方向均匀分配元素,相邻元素之间距离相同。第一个元素与行首对齐,最后一个元素与行尾对齐。

    Row({}) {
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    }.width('100%').height(200).backgroundColor('rgb(242,242,242)').justifyContent(FlexAlign.SpaceBetween)

  • justifyContent(FlexAlign.SpaceAround):水平方向均匀分配元素,相邻元素之间距离相同。第一个元素到行首的距离和最后一个元素到行尾的距离是相邻元素之间距离的一半。

    Row({}) {
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xD2B48C)
    
    Column() {
    }.width('20%').height(30).backgroundColor(0xF5DEB3)
    }.width('100%').height(200).backgroundColor('rgb(242,242,242)').justifyContent(FlexAlign.SpaceAround)

  • justifyContent(FlexAlign.SpaceEvenly):水平方向均匀分配元素,相邻元素之间的距离、第一个元素与行首的间距、最后一个元素到行尾的间距都完全一样。

    Row({}) {
      Column() {
      }.width('20%').height(30).backgroundColor(0xF5DEB3)
    
      Column() {
      }.width('20%').height(30).backgroundColor(0xD2B48C)
    
      Column() {
      }.width('20%').height(30).backgroundColor(0xF5DEB3)
    }.width('100%').height(200).backgroundColor('rgb(242,242,242)').justifyContent(FlexAlign.SpaceEvenly)

自适应拉伸

在线性布局下,常用空白填充组件Blank,在容器主轴方向自动填充空白空间,达到自适应拉伸效果。Row和Column作为容器,只需要添加宽高为百分比,当屏幕宽高发生变化时,会产生自适应效果。

@Entry
@Component
struct BlankExample {
build() {
Column() {
Row() {
Text('Bluetooth').fontSize(18)
Blank()
Toggle({ type: ToggleType.Switch, isOn: true })
}.backgroundColor(0xFFFFFF).borderRadius(15).padding({ left: 12 }).width('100%')
}.backgroundColor(0xEFEFEF).padding(20).width('100%')
}
}

图9 竖屏

图10 横屏

自适应缩放

自适应缩放是指子元素随容器尺寸的变化而按照预设的比例自动调整尺寸,适应各种不同大小的设备。在线性布局中,可以使用以下两种方法实现自适应缩放。

  • 父容器尺寸确定时,使用layoutWeight属性设置子元素和兄弟元素在主轴上的权重,忽略元素本身尺寸设置,使它们在任意尺寸的设备下自适应占满剩余空间。

    @Entry
    @Component
    struct layoutWeightExample {
    build() {
    Column() {
    Text('1:2:3').width('100%')
    Row() {
    Column() {
    Text('layoutWeight(1)')
    .textAlign(TextAlign.Center)
    }.layoutWeight(1).backgroundColor(0xF5DEB3).height('100%')
    
    Column() {
    Text('layoutWeight(2)')
    .textAlign(TextAlign.Center)
    }.layoutWeight(2).backgroundColor(0xD2B48C).height('100%')
    
    Column() {
    Text('layoutWeight(3)')
    .textAlign(TextAlign.Center)
    }.layoutWeight(3).backgroundColor(0xF5DEB3).height('100%')
    
    }.backgroundColor(0xffd306).height('30%')
    
    Text('2:5:3').width('100%')
    Row() {
    Column() {
    Text('layoutWeight(2)')
    .textAlign(TextAlign.Center)
    }.layoutWeight(2).backgroundColor(0xF5DEB3).height('100%')
    
    Column() {
    Text('layoutWeight(5)')
    .textAlign(TextAlign.Center)
    }.layoutWeight(5).backgroundColor(0xD2B48C).height('100%')
    
    Column() {
    Text('layoutWeight(3)')
    .textAlign(TextAlign.Center)
    }.layoutWeight(3).backgroundColor(0xF5DEB3).height('100%')
    }.backgroundColor(0xffd306).height('30%')
    }
    }
    }

    图11 横屏

    图12 竖屏

  • 父容器尺寸确定时,使用百分比设置子元素和兄弟元素的宽度,使他们在任意尺寸的设备下保持固定的自适应占比。

    @Entry
    @Component
    struct WidthExample {
    build() {
    Column() {
    Row() {
    Column() {
    Text('left width 20%')
    .textAlign(TextAlign.Center)
    }.width('20%').backgroundColor(0xF5DEB3).height('100%')
    
    Column() {
    Text('center width 50%')
    .textAlign(TextAlign.Center)
    }.width('50%').backgroundColor(0xD2B48C).height('100%')
    
    Column() {
    Text('right width 30%')
    .textAlign(TextAlign.Center)
    }.width('30%').backgroundColor(0xF5DEB3).height('100%')
    }.backgroundColor(0xffd306).height('30%')
    }
    }
    }

    图13 横屏

    图14 竖屏

自适应延伸

自适应延伸是指在不同尺寸设备下,当页面的内容超出屏幕大小而无法完全显示时,可以通过滚动条进行拖动展示。这种方法适用于线性布局中内容无法一屏展示的场景。通常有以下两种实现方式。

  • 在List中添加滚动条:当List子项过多一屏放不下时,可以将每一项子元素放置在不同的组件中,通过滚动条进行拖动展示。可以通过scrollBar属性设置滚动条的常驻状态,edgeEffect属性设置拖动到内容最末端的回弹效果。

  • 使用Scroll组件:在线性布局中,开发者可以进行垂直方向或者水平方向的布局。当一屏无法完全显示时,可以在Column或Row组件的外层包裹一个可滚动的容器组件Scroll来实现可滑动的线性布局。

    垂直方向布局中使用Scroll组件:

    @Entry
    @Component
    struct ScrollExample {
    scroller: Scroller = new Scroller();
    private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    
    build() {
    Scroll(this.scroller) {
    Column() {
    ForEach(this.arr, (item?:number|undefined) => {
    if(item){
    Text(item.toString())
    .width('90%')
    .height(150)
    .backgroundColor(0xFFFFFF)
    .borderRadius(15)
    .fontSize(16)
    .textAlign(TextAlign.Center)
    .margin({ top: 10 })
    }
    }, (item:number) => item.toString())
    }.width('100%')
    }
    .backgroundColor(0xDCDCDC)
    .scrollable(ScrollDirection.Vertical) // 滚动方向为垂直方向
    .scrollBar(BarState.On) // 滚动条常驻显示
    .scrollBarColor(Color.Gray) // 滚动条颜色
    .scrollBarWidth(10) // 滚动条宽度
    .edgeEffect(EdgeEffect.Spring) // 滚动到边沿后回弹
    }
    }

    水平方向布局中使用Scroll组件:

    @Entry
    @Component
    struct ScrollExample {
    scroller: Scroller = new Scroller();
    private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    
    build() {
    Scroll(this.scroller) {
    Row() {
    ForEach(this.arr, (item?:number|undefined) => {
    if(item){
    Text(item.toString())
    .height('90%')
    .width(150)
    .backgroundColor(0xFFFFFF)
    .borderRadius(15)
    .fontSize(16)
    .textAlign(TextAlign.Center)
    .margin({ left: 10 })
    }
    })
    }.height('100%')
    }
    .backgroundColor(0xDCDCDC)
    .scrollable(ScrollDirection.Horizontal) // 滚动方向为水平方向
    .scrollBar(BarState.On) // 滚动条常驻显示
    .scrollBarColor(Color.Gray) // 滚动条颜色
    .scrollBarWidth(10) // 滚动条宽度
    .edgeEffect(EdgeEffect.Spring) // 滚动到边沿后回弹
    }
    }

HarmonyOS Next开发学习手册——线性布局 (Row/Column) 线性布局(LinearLayout)是开发中最常用的布局,通过线性容器Row和Column构建。线性布局是其他布局的基础,其子元素在线性方向上(水平方向和垂直方向)依次排列。线性布局的排列方向由所选容器组件决定,Column容器内子元素按照垂直方向排列,Row容器内子元素按照水平方向排列。根据不同的排列方向,开发者可选择使用Row或Column容器创建线性布局。图1Column容器内子元素排列示意图图2Row容器内子元素排列示意图。 阅读详情

相关推荐

认识HarmonyOS

HarmonyOS 是一款革命性的操作系统,具备硬件互助、资源共享的特性,将多终端设备整合为一个超级终端,实现了资源的无缝调用与共享。无论是手机、电视还是智能穿戴设备,都能通过HarmonyOS轻松协同工作,创造出前所未有的使用体验。一次开发,多端部署的能力,进一步简化了开发者的工作量,确保应用程序在多种设备上都能流畅运行。HarmonyOS的分层架构设计则让它能灵活适配不同硬件设备,提供稳定高效的系统支持,为未来多终端互联互通奠定了坚实基础。

xiao廸要飞 2821

鸿蒙开发-UI-布局-线性布局

上文学习了鸿蒙开发UI布局相关的知识,简单介绍了布局的分类。本文详细学习其中一种常见布局方式-线性布局。本文详细学习其中一种常见布局方式-线性布局,学习了线性容器内子元素在主轴以及交叉轴上的排列方式,同时也学习了子元素自适应相关的知识点,后面继续学习层叠布局。

中年程序员 2629

鸿蒙5.0进阶开发:UI开发-构建布局(线性布局 (Row/Column))

线性布局(LinearLayout)是开发中最常用的布局,通过线性容器Row和Column构建。

AyomQAQ的博客 1157

2023年度总结——我关注的技术界大事回顾

2023年发生了那么多新闻事件,作为程序员更关注哪些事件呢,这些事件又能引起什么人生感触呢,在这篇文章中你将看到我的想法,那你有什么想法呢。

qq_43408971的博客 1232

HarmonyOS鸿蒙学习基础篇 - Column/Row 组件

Row和Column组件是线性布局容器,用于按照垂直或水平方向排列子组件。Row表示沿水平方向布局的容器,而Column表示沿垂直方向布局的容器。这些容器具有许多属性和方法,可以方便地管理子组件的位置、大小、间距和对齐方式。例如,可以设置容器内部的子组件之间的间距(space属性),以及子组件在主轴(水平或垂直方向)和交叉轴上的对齐方式。

2303_76218115的博客 7662

鸿蒙HarmonyOS实战-ArkUI组件(Row Column)_arkui 设置控件高度自适应(1)

HarmonyOS的布局组件是一组用于构建用户界面布局的组件,包括线性布局、相对布局、网格布局等。这些组件帮助开发者以简单和灵活的方式管理和组织应用程序中的视图,并支持多种不同的设备屏幕尺寸和方向。使用HarmonyOS的布局组件可以提高应用程序的可读性和可维护性,并帮助快速构建适应不同设备的用户界面。

2401_84182073的博客 1448

ArcTs布局入门01——线性布局(Row/Column)

接下来,我们将介绍弹性布局(Flex),请持续关注“ArcTs布局入门02”。如果你对鸿蒙开发感兴趣,加入“Harmony自习室”吧~👇🏻👇🏻👇🏻👇🏻扫描下面的二维码关注公众号。

harmonyClassRoom的博客 1803

COT Buck和普通Buck的区别

传统的电流模控制的调制原理,由时钟脉冲信号 clk 的上升沿触发开始一个新的开关周期,d 由低变高,主开关闭合,流过它的电流和电感电流相等,并以固定斜率逐渐增大,直至 iL *Ri 与斜坡补偿信号 se 的和等于控制信号 vc;此时,比较器的输出电平由低变高,导通时间产生器被触发,其输出 d 由低变高,并产生一个固定的导通时间 Ton;然后 PWM 比较器的输出由低变高,导通时间产生器被触发,主开关闭合,电感电流逐渐增大,直到导通时间产生器计满固定的时间 Ton,d 变为低电平,主开关断开,周期结束。

模拟芯片设计 1131

UI开发布局-HarmonyOS应用UI开发布局

UI页面的构建不用再像Android开发过程中在.xml文件中书写,可直接在页面上使用声明式UI的方式按照布局进行排列,构建应用的页面。

2401_83047642的博客 1832

Valeo近场数据集:多模态行人意图检测技术解析

行人意图检测是智能驾驶系统的关键技术,通过分析行人运动轨迹预测其行为意图。传统方法受限于单传感器数据,难以应对复杂场景。多模态融合技术结合视觉、LiDAR和惯性测量数据,显著提升检测精度。Valeo近场数据集(VNF)创新性地采用鱼眼相机、多LiDAR和动作捕捉系统,实现3D姿态与意图标签的精准对齐。该数据集支持开发距离自适应的行人感知算法,在ADAS防碰撞、智能迎宾等场景具有重要应用价值。关键技术包括传感器同步、3D姿态重建和时空图卷积网络,为行业提供了标准化评估基准。

weixin_30566111的博客 660

BRepNet与图神经网络融合:提升3D CAD加工特征识别的精度与泛化能力

本文探讨了BRepNet与图神经网络(GNN)融合技术如何显著提升3D CAD加工特征识别的精度与泛化能力。通过将CAD模型视为图结构,利用GNN的消息传递机制增强对复杂拓扑关系的理解,并结合BRepNet的局部特征提取,该融合方法在MFCAD++数据集上实现了高达99.53%的准确率,有效解决了传统方法在处理复杂相交特征时的局限性,为智能制造提供了关键技术支撑。

android的专栏 779

鸿蒙5.0开发进阶:UI开发组件布局-线性布局 (Row/Column)

线性布局(LinearLayout)是开发中最常用的布局,通过线性容器Row和Column构建。

Androidbye的博客 866

【万字长文】学习Armv8架构虚拟化一篇就够了

这里我们将介绍一些基础的Hypervisor和虚拟化的理论知识。如果你已经有一定的基础或是已经熟悉了这些概念,可以跳过这部分内容。我们用Hypervisor这个词来定义一种负责创建,管理以及调度虚拟机(Virtual Machines, VMs)的软件。Stage 2 转换允许Hypervisor控制虚拟机的内存视图。具体来说,其可以控制虚拟机是否可以访问特定的某一块物理内存,以及该内存块出现在虚拟机内存空间的位置。这种能力对于虚拟机的隔离和沙箱功能来说至关重要。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 5321

鸿蒙5.0版开发:ArkUI框架开发-线性布局 (Row/Column)

线性布局(LinearLayout)是开发中最常用的布局,通过线性容器Row和Column构建。

m0_73088370的博客 1265

GPU基准测试全攻略:从驱动验证到深度学习环境部署

GPU基准测试是评估显卡性能与稳定性的核心方法,其原理在于通过标准化负载程序,对GPU的计算单元、显存和散热系统进行压力测试。这项技术的价值在于,它能科学量化硬件性能,确保软件环境配置正确,为深度学习、科学计算等重负载任务提供稳定基础。在实际应用场景中,无论是新卡验机、排查深度学习环境问题(如“warning: no usable gpu found”报错),还是验证“PyTorch GPU版本安装”后的实际算力,系统的基准测试都是不可或缺的工程实践环节。通过结合通用计算测试与深度学习框架验证,用户可以提前

weixin_30080745的博客 344

CosyVoice语音合成使用教程

CosyVoice是一款开源的语音合成工具,它基于深度学习模型,能够生成高度逼真的语音内容。该工具支持多种语言的语音生成,包括中文、英文、日文、粤语和韩语。CosyVoice的亮点在于它对生成语音情感和韵律的精细控制,通过富文本或自然语言输入,可以显著提升合成语音的情感表达能力。CosyVoice提供了多种预训练模型,用户可以根据需求选择合适的模型。:基底模型,适用于一般语音合成任务。:经过SFT微调的模型,适用于特定音色和情感的语音合成。:支持Instruct微调的模型,适用于自然语言控制的语音合成。

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 4445

【愚公系列】2023年11月 HarmonyOS教学课程 005-ArkUI组件(Row/Column)

HarmonyOS的布局组件是一组用于构建用户界面布局的组件,包括线性布局、相对布局、网格布局等。这些组件帮助开发者以简单和灵活的方式管理和组织应用程序中的视图,并支持多种不同的设备屏幕尺寸和方向。使用HarmonyOS的布局组件可以提高应用程序的可读性和可维护性,并帮助快速构建适应不同设备的用户界面。

愚公智库 6万+

轻量化部署实战:C#上位机集成AI模型的3种方案深度对比(ML.NET/ONNX/TensorFlow.NET)

C#上位机部署AI模型,核心不是“选最强大的方案”,而是“选最适配的方案”——工控机的低配置、高稳定性需求,决定了“轻量化”和“部署简单”是选型的首要原则。回顾3种方案:ML.NET:原生、轻量化、零依赖,适合传统ML场景,低配置工控机首选;ONNX Runtime:通用、平衡、易落地,适合深度学习场景,工业落地首选;TensorFlow.NET:强大、灵活、纯C#,适合复杂模型,高配置工控机首选。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 365

鸿蒙next开发:UI开发-构建布局(线性布局 (Row/Column))

本文详细介绍了鸿蒙HarmonyOS开发中的线性布局(LinearLayout)及其核心概念。

qq_39652397的博客 838

实时系统vxWorks - 虚拟机环境搭建

概述VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的...

不只会拍照的程序猿 7854

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【鸿蒙(HarmonyOS)】ArkUI构建布局(线性布局Row/Column、层叠布局Stack、弹性布局Flex、相对布局RelativeContainer)

描述:构建布局是UI界面开发的基础,如何使界面看起来优雅简洁?编辑程序时不迷路?都离不开一个好的布局思路和习惯。 难度:简单 任务: 1、认识线性布局Row/Column、层叠布局Stack、弹性布局Flex、相对布局RelativeContainer。 2、拿生活中的一些发布的软件进行练手。

守夜人 5360

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

鸿蒙5.0开发:ArkUI组件(Row/Column)

HarmonyOS的布局组件是一组用于构建用户界面布局的组件,包括线性布局、相对布局、网格布局等。

AyomQAQ的博客 1079

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

零基础入门鸿蒙应用开发:五、线性布局与弹性布局

华为HarmonyOS开发指南:ArkUI线性布局与弹性布局详解 本文介绍了华为HarmonyOS中ArkUI框架的两种核心布局方式。线性布局通过Row(水平)和Column(垂直)容器实现,支持主/交叉轴对齐、子组件对齐格式设置及自适应缩放功能,其中space属性可控制间距,layoutWeight实现比例分配。弹性布局(Flex)则提供更灵活的排列方式,当子元素总和超出容器尺寸时,可通过wrap属性控制换行显示,并支持主轴/侧轴多种对齐方式设置。这两种布局均为HarmonyOS应用开发的基础组件,能有效

weixin_62177516的博客 2017

鸿蒙HarmonyOS应用开发,UI开发(一)布局线性布局

因为ArkTS以及讲过了我们直接从布局开始组件按照布局的要求依次排列,构成应用的页面。在声明式UI中,所有的页面都是由自定义组件构成,开发者可以根据自己的需求,选择合适的布局进行页面开发。

wwwwmmmmyyybshjz的博客 858

HarmonyOS:线性布局(Row/Column)

线性布局(Row/Column)是UI开发的核心布局方式,通过主轴(排列方向)和交叉轴(垂直方向)实现元素有序排列。

2401_87008233的博客 1305

鸿蒙next开发:ArkUI组件(Row/Column)

HarmonyOS的布局组件是一组用于构建用户界面布局的组件,包括线性布局、相对布局、网格布局等。

Aym88的博客 697
上一篇: 鸿蒙5.0开发进阶:UI开发常用组件-气泡提示 (Popup)
下一篇: 鸿蒙5.0开发进阶:UI框架-层叠布局 (Stack)
懂你的大海
博客等级 码龄6年 9049粉丝 1381原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值