UI(四)布局

news2024/12/24 3:54:01

文章目录

          • 10、Navigator——路由器组件
          • 11、Pannel——可滑动面板
          • 12、Refresh——刷新组件
          • 13、RelativeContainer——相对布局组件
          • 14、Scroll——可滚动容器
          • 15、SideBarContainer——侧边栏容器
          • 16、Stack——堆叠容器
          • 17、Swiper——滑动块视图容器
          • 18、Tabs和TabContent——页签和页签视图容器

10、Navigator——路由器组件

Navigator是路由器组件,提供路由跳转能力
Navigator的构造函数参数有两个

target目标页面路由
type指定路由方式,默认值是Navigator.Push

type有3个值

push跳转到应用内的指定页面
Replace到应用内的某个页面替换当前页面,并销毁被替换的页面
Back返回上一个页面或指定页面
11、Pannel——可滑动面板

Pannel是可滑动面板,提供一种轻量的内容展示窗口,方便在不同尺寸间切换

Panel(true){
          Column(){
            Text('今日历程').width('100%').fontSize(30).textAlign(TextAlign.Center)
            Text('1、学习Java').width('100%').fontSize(20).textAlign(TextAlign.Start)
            Text('2、学习ArkUI').width('100%').fontSize(20).textAlign(TextAlign.Start)
            Text('1、学习Android').width('100%').fontSize(20).textAlign(TextAlign.Start)
          }
        }
        .type(PanelType.Foldable).mode(PanelMode.Half)
        .dragBar(true)  //默认开启
        .halfHeight(300) //默认一半
12、Refresh——刷新组件

Refresh是可以进行页面下拉刷新操作的容器组件,主要参数

refreshing当前组件是否正在刷新
offset刷新组件静止时距离父组件顶部的位置,默认值是16,单位是Vp
friction下拉摩擦系数 取值范围0~100
Refresh({
  refreshing:false, //  组件是否正在刷新
  offset:120,   // 新组件静止时距离父组件顶部的距离
  friction:100  //摩擦系数  取值范围 0 ~ 100
}){
  Text('正在刷新')
    .fontSize(30)
    .margin(20)
}
.onStateChange((state:RefreshStatus) => {  //刷新状态监听

})
13、RelativeContainer——相对布局组件
RelativeContainer(){
          //第一个位置父容器的顶部,靠左
          Row().width(100).height(100)
            .backgroundColor("#ff3333")
            .alignRules({
              top:{anchor:"__container__",align:VerticalAlign.Top}, //__container__ 为容器固定的id
              left:{anchor:"__container__",align:HorizontalAlign.Start}
            })
            .id('row1')

          //第二个位置父容器顶部 水平位置结束
          Row().width(100).height(100)
            .backgroundColor("#ffcc00")
            .alignRules({
              top:{anchor:"__container__",align:VerticalAlign.Top},
              right:{anchor:"__container__",align:HorizontalAlign.End}
            })
            .id('row2')

          //第三个位置 顶部对齐row1的底部,左边对齐row1的结束
          Row().width(100).height(100)
            .backgroundColor("#ff6633")
            .alignRules({
              top:{anchor:"row1",align:VerticalAlign.Bottom},
              left:{anchor:"row1",align:HorizontalAlign.End}
            })
            .id('row3')

          // 第四个位置 父容器左边对齐 垂直方向的底部
          Row().width(100).height(100)
            .backgroundColor("#ff9966")
            .alignRules({
              left:{anchor:"__container__",align:HorizontalAlign.Start},
              bottom:{anchor:"__container__",align:VerticalAlign.Bottom}
            })
            .id('row4')
          
          //第五个位置 左边挨着row3的接水 底部对齐父容器底部
          Row().width(100).height(100)
            .backgroundColor("#ff66ff")
            .alignRules({
              left:{anchor:"row3",align:HorizontalAlign.End},
              bottom:{anchor:"__container__",align:VerticalAlign.Bottom}
            })
            .id('row5')

        }
        .width(300)
        .height(300)
        .border({width:2,color:"#6699FF"})

image.png

14、Scroll——可滚动容器

scroll是可滚动的容器组件,当子组件的布局尺寸超过父组件的尺寸,内容可以滚动。

 Scroll(new Scroller()){
          Column(){
            ForEach(this.numArr,(item) => {
              Text(item.toString())
                .width('90%')
                .height(200)
                .fontSize(40)
                .backgroundColor(0xffffff)
                .fontColor(Color.Red)
                .margin({top:10})
                .textAlign(TextAlign.Center)
            },item => item)
          }.width('100%')
        }
        .scrollable(ScrollDirection.Vertical) //设置滚动方向为垂直
        .scrollBar(BarState.On) //滚动条常驻显示
        .scrollBarColor(Color.Blue)
        .scrollBarWidth(30)
        .edgeEffect(EdgeEffect.None)
        .onScroll((xOffset: number, yOffset: number) => {
          console.info(xOffset + '  '+ yOffset)
        })
        .onScrollEdge((side:Edge) => {
          console.info("to the edge")
        })
        .onScrollStop(() => {
          console.info("scoll to stop")
        })
        .backgroundColor(0xDcDcdc)

image.png

15、SideBarContainer——侧边栏容器

SideBarContainer是提供侧边栏可以显示和隐藏的侧边栏容器,通过子组件定义侧边栏和内容区,第一个子组件表示侧边栏,第二个子组件表示内容区。

SideBarContainer(SideBarContainerType.Embed){
  Column(){
    Text('菜单1').width('100%').fontSize(23)
    Text('菜单2').width('100%').fontSize(23)
  }.width('100%')
  .justifyContent(FlexAlign.SpaceEvenly)
  .backgroundColor('#19000000')

  Column(){
    Text('内容1').width('100%').fontSize(23)
    Text('内容2').width('100%').fontSize(23)
  }
}

image.png

16、Stack——堆叠容器

Stack是堆叠容器,子组件按照顺序依次入栈,后一个子组件覆盖前一个字组件

Stack() {
  Text('第一层')
    .width('90%')
    .textAlign(TextAlign.Center)
    .height('90%')
    .align(Alignment.Center)
    .backgroundColor(Color.Red)

  Text('第二层')
    .width('70%')
    .textAlign(TextAlign.Center)
    .height('70%')
    .align(Alignment.Center)
    .backgroundColor(Color.Blue)

  Text('第三层')
    .width('40%')
    .textAlign(TextAlign.Center)
    .height('40%')
    .align(Alignment.Center)
    .backgroundColor(Color.Yellow)
}

image.png

17、Swiper——滑动块视图容器

Swiper是滑动块视图容器,提供子组件滑动轮播显示的能力

Swiper(){
  Image($r('app.media.img2')).width('100%').height(200)
  Image($r('app.media.img3')).width('100%').height(200)
  Image($r('app.media.img4')).width('100%').height(200)
}
.cachedCount(2)  //设置预加载子组件的个数
.index(1)  //当前容器默认展示子组件的索引值
.autoPlay(true) // 设置是否自动播放
.interval(4000)  //自动播放的时间间隔 单位毫秒
.loop(true)  //是否循环播放
.duration(1000)  // 子组件切换的动画时长
.itemSpace(20)  // 设置子组件与子组件之间的间隙
.curve(Curve.EaseOut)  // 设置Swiper的动画曲线

格式工厂 屏幕录像20240701_172805 00_00_00-00_00_09.gif

18、Tabs和TabContent——页签和页签视图容器

Tabs是通过页签进行内容视图切换的容器组件,每个页签对应一个内容视图TabContent

barPosition设置tabs的页签位置,默认值是BarPosition.Start
index设置初始页签索引,默认值0
controllerTabs控制器
Tabs({ barPosition:BarPosition.Start,
index:1,
controller:new TabsController()}){
  TabContent(){
    Column().width('100%').height('100%').backgroundColor(Color.Red)
  }
  TabContent(){
    Column().width('100%').height('100%').backgroundColor(Color.Blue)
  }
  TabContent(){
    Column().width('100%').height('100%').backgroundColor(Color.Green)
  }
}
.vertical(false)  //设置为false是横向的tabs 设置为true是纵向的
.barMode(BarMode.Fixed) // TabBar布局样式
.barWidth(360)
.height(56)
.animationDuration(400)
.width('100%')
.height(360)
.margin({ top:52 })

格式工厂 屏幕录像20240701_174028 00_00_00-00_00_08.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1883830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac英语学习工具:Eudic欧路词典 for Mac 激活版

Eudic欧路词典是一款非常受欢迎的英语学习软件,它提供了丰富的词汇解释、例句、同义词、反义词等功能,帮助用户更好地理解和掌握英语单词。 以下是Eudic欧路词典的一些主要特点: 海量词汇库:Eudic欧路词典拥有庞大的词汇库&#…

arm_uart4实验

#include "uart4.h" //UART //初始化 void hal_uart4_init() { //rcc_init //…

Google推出开源模型Gemma 2:性能大幅提升与创新训练方法

引言 近日,Google推出了开源模型Gemma 2,吸引了广大研究人员和开发者的关注。相比上一代模型,Gemma 2在性能和可用性方面实现了显著提升,提供了9B和27B两个版本,并且对外开放免费使用。本文将深入探讨Gemma 2的技术细…

QueryClientProvider is not defined

QueryClientProvider is not defined 运行一个svelte的项目,报错如上,前后查找解决不了,然后没办法, 本来是用yarn 安装的依赖,改用npm install,再次运行就成功了

可燃气体报警器定期检测:优化与改进策略的探讨

在现代化的工业环境中,可燃气体报警器的作用日益凸显。它们像是我们生产现场的安全卫士,时刻警惕着可能发生的危险,确保我们的工作环境安全、稳定。 然而,要确保这些“卫士”始终忠诚可靠,定期检测就显得尤为重要。 …

【JVM面试题】总结-01

【JVM面试题】总结-01 1. 介绍下Java内存区域(运行时数据区)1.1 程序计数器(线程私有)1.2 虚拟机栈(线程私有)1.3 本地方法栈(线程私有)1.4 Java堆(线程共享)1.5 方法区(线程共享)1.5.1 方法区和永久代的关系1.5.2 常用参数1.5.3 为什么要将永久代 (方法区) 替换为元空间 (Meta…

WCCI 2024开幕,横滨圣地巡礼,畅游动漫与美食的世界

惊喜!WCCI 2024开幕,横滨圣地巡礼!畅游动漫与美食的世界 会议之眼 快讯 会议介绍 IEEE WCCI(World Congress on Computational Intelligence)2024,即2024年IEEE世界计算智能大会,于6月30日至…

写代码,为什么还需要作图?

引言 古人云 :一图胜千言,闲人说:无图无真相。 在日常的聊天工具当中,无论是使用微信,还是钉钉。使用图片或表情包的频次越来越高,那是为什么呢?其实在互联网没有那么发达的时候,我…

Adobe Premiere 视频编辑软件下载安装,pr全系列分享 轻松编辑视频

Adobe Premiere,自其诞生之日起,便以其卓越的性能和出色的表现,稳坐视频编辑领域的王者宝座,赢得了无数专业编辑人员与广大爱好者的青睐。这款强大的视频编辑软件,凭借其丰富的功能和灵活的操作性,为用户提…

(1)Jupyter Notebook 下载及安装

目录 1. Jupyter Notebook是什么?2. Jupyter Notebook特征3. 应用3. 利用Google Colab安装Jupyter Notebook3.1 什么是 Colab?3.2 访问 Google Colab 1. Jupyter Notebook是什么? 百度百科: Jupyter Notebook(此前被称为 IPython …

函数创建单链表---无n型,需要 while 循环 + scanf

题目&#xff1a; #include <stdlib.h> struct link{int data;struct link *next; }; struct link* creatLink(); int main(){struct link *head,*p;headcreatLink();for(phead->next ;p;pp->next )printf("%d ",p->data );return 0; }/* 请在这里填…

501、二叉搜索树中的众数

给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;。如果树中有不止一个众数&#xff0c;可以按 任意顺序 返回。 假定 BST 满足如下定义&#xff1…

泛微E9开发 根据故障来源新增明细行,并且初始化错误类型

根据故障来源新增明细行&#xff0c;并且初始化错误类型 1、需求说明2、实现方法3、扩展知识点3.1 批量修改字段值或显示属性3.1.1 格式3.1.2 参数3.1.3 演示 3.2 根据字段ID获取字段信息3.2.1 格式3.2.2 参数3.2.3 演示 1、需求说明 用户对出现故障的机器或设备进行判断问题判…

第十四届蓝桥杯省赛C++A组F题【买瓜】题解(AC)

70pts 题目要求我们在给定的瓜中选择一些瓜&#xff0c;可以选择将瓜劈成两半&#xff0c;使得最后的总重量恰好等于 m m m。我们的目标是求出至少需要劈多少个瓜。 首先&#xff0c;我们注意到每个瓜的重量最多为 1 0 9 10^9 109&#xff0c;而求和的重量 m m m 也最多为…

Linux高并发服务器开发(八)Socket和TCP

文章目录 1 IPV4套接字结构体2 TCP客户端函数 3 TCP服务器流程函数代码粘包 4 三次握手5 四次挥手6 滑动窗口 1 IPV4套接字结构体 2 TCP客户端 特点&#xff1a;出错重传 每次发送数据对方都会回ACK&#xff0c;可靠 tcp是打电话的模型&#xff0c;建立连接 使用连接 关闭连接…

探索SOLIDWORKS 2024设计增强功能

随着技术的不断进步和市场的日益竞争&#xff0c;工程设计和制造行业对于快捷、准确和创新的工具需求日益增长。SOLIDWORKS作为3D CAD设计软件&#xff0c;一直致力于为用户提供更强大、更便捷的设计工具。SOLIDWORKS 2024的发布&#xff0c;再次证明了其在设计增强功能方面的持…

代码随想录算法训练营Day55|42.接雨水、84.柱状图中最大的矩形

接雨水 42. 接雨水 - 力扣&#xff08;LeetCode&#xff09; 暴力解法 对计算接到的雨水&#xff0c;有两种方式&#xff0c;一是按照行来计算。 另一种是按列计算 按列计算容易不乱。基本思路如下&#xff1a; 对每列i进行循环&#xff0c;在循环中&#xff0c;找到该列左…

python-逻辑语句

if else语句 不同于C&#xff1a;else if range语句&#xff1a; continue continue的作用是&#xff1a; 中断所在循环的当次执行&#xff0c;直接进入下一次 continue在嵌套循环中的应用 break 直接结束所在的循环 break在嵌套循环中的应用 continue和break&#xff0c;在…

【TB作品】atmega16 计算器,ATMEGA16单片机,Proteus仿真

实验报告&#xff1a;基于ATmega16单片机的简易计算器设计 1. 实验背景 计算器是日常生活和工作中不可或缺的工具&#xff0c;通过按键输入即可实现基本的四则运算。通过本实验&#xff0c;我们将利用ATmega16单片机、矩阵键盘和LCD1602显示屏&#xff0c;设计并实现一个简易…

【TB作品】智能台灯,ATMEGA16单片机,Proteus仿真

智能台灯 1 adc检测光强光敏电阻 显示电压 2 光强太高 也就是高于临界值 就关闭小灯 3 光强太低 也就是低于临界值 就打开小灯 3 按键修改临界值 显示 实验报告&#xff1a;基于ATMEGA16单片机的智能台灯设计与Proteus仿真 1. 实验背景 智能台灯是一种能够根据环境光强自动调…