学习鸿蒙基础(10)

news2024/11/27 14:46:15

目录

一、轮播组件 Swiper

二、列表-List

 1、简单的List

2、嵌套的List

三、Tabs容器组件

1、系统自带tabs案例

2、自定义导航栏:


一、轮播组件 Swiper
@Entry
@Component
struct PageSwiper {
  @State message: string = 'Hello World'
  private SwCon: SwiperController = new SwiperController()

  build() {
    Column() {
      Swiper(this.SwCon) {
        Text("龙").backgroundColor(Color.Red).textStyle()
        Text("兔").backgroundColor(Color.Yellow).textStyle()
        Text("神").backgroundColor(Color.Orange).textStyle()
      }
      // .autoPlay(true)
      .interval(2000)
      .indicatorStyle({
        color: Color.White,
        selectedColor: Color.Pink,
        size: 20
      }).onChange(index=>{
        console.log(`${index}`)
      })
      // .vertical(true)
      Row() {
        Button("上一个").onClick(v => {
          this.SwCon.showPrevious();
        }).margin({ top: 10, right: 10 })
        Button("下一个").onClick(v => {
          this.SwCon.showNext()
        }).margin({ left: 10, top: 10 })
      }.width("100%").justifyContent(FlexAlign.Center)

    }
    .height('100%')
  }
}

@Extend(Text) function textStyle() {
  .width("100%").height(200)
}
二、列表-List

列表是一种复杂的容器,当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录.音乐列表、购物清单等)。
ListltemGroup用于列表数据的分组展示,其子组件也是Listltem。Listltem表示单个列表项,可以包含单个子组件。

 1、简单的List
@Entry
@Component
struct PageList {
  @State message: string = 'Hello World'
  @State list: string[] = ["子(鼠)", "丑(牛)", "寅(虎)", "卯(兔)"
    , "辰(龙)", "巳(蛇)", "午(马)", "未(羊)", "申(猴)", "酉(鸡)", "戌(狗)", "亥(猪)"]
  ScrollList: Scroller = new Scroller()
  @State isNoBottom:boolean=true;

  build() {
    Row() {
      Column() {
        List({ scroller: this.ScrollList }) {
          ForEach(this.list, (item, index) => {
            ListItem() {
              Text(item).fontSize(25)
            }
            .height(100)
            .width("100%")
            .backgroundColor(Color.Pink)
            .align(Alignment.Center) //控制item的字体位置
            .margin({ top: 10 })
            .swipeAction({ //侧滑删除的样式
              end: this.Delete(index)
            })
          })
        }.width("100%").height("50%").backgroundColor(Color.Gray)
        // .listDirection(Axis.Horizontal)//控制滑动的方向
        .alignListItem(ListItemAlign.Center) //控制list内部的位置
        .onScrollIndex((star,end)=>{

          if(this.list.length-1===end&&this.isNoBottom){
            this.isNoBottom=false
            console.log(end+"---------------到底了")
          }
        })

        Button("回顶部").onClick(v => {
          this.ScrollList.scrollToIndex(0)
        }).margin({top:10})
      }
      .height('100%').width('100%').justifyContent(FlexAlign.Center)
    }.height('100%')
  }

  @Builder
  Delete(index: number) {
    Text("删除")
      .backgroundColor(Color.Orange)
      .height(100)
      .width(80)
      .textAlign(TextAlign.Center)
      .fontSize(26)
      .fontColor(Color.Grey)
      .onClick(v => {
        this.list.splice(index, 1)
      })
  }
}
2、嵌套的List
@Entry
@Component
struct PageList2 {
  @State message: string = 'Hello World'
  @State cityList: Object[] =
    [{ type: "A", name: ["安顺", "安庆", "安康"] }, { type: "B", name: ["北京", "北大荒", "保定"] }, { type: "C", name: ["长春", "长安", "长冶"] }]

  // 嵌套的list列表。
  build() {
    Row() {
      List(){
        ForEach(this.cityList,item=>{
            ListItemGroup({header:this.head(item.type)}){
                ForEach(item.name,item1=>{
                  ListItem(){
                    Text(item1)
                  }.height(80).width('100%').align(Alignment.Start)
                })
            }
        })
      }.width('100%').height('30%').margin({left:10})
      .sticky(StickyStyle.Header)//悬浮一级目录
    }
    .height('100%')
  }

  @Builder
  head(type){
    Text(type).fontSize(25).fontColor(Color.Red)
      .backgroundColor(Color.White)
  }
}
三、Tabs容器组件

当页面信息较多时,为了让用户能够聚焦于当前显示的内容,需要对页面内容进行分类,提高页面空间利用率。[Tabs]组件可以在一个页面内快速实现视图内容的切换,一方面提升查找信息的效率,另一方面精简用户单次获取到的信息量。
Tabs组件的页面组成包含两个部分,分别是TabContent和TabBar。TabContent是内容页,TabBar是导航页签栏,页面结构如下图所示,根据不同的导航类型,布局会有区别,可以分为底部导航、顶部导航、侧边导航,其导航栏分别位于底部、顶部和侧边。

 

每一个TabContent对应的内容需要有一个页签,可以通过TabContent的tabBar属性进行配置。在如下TabContent组件上设置属性tabBar,可以设置其对应页签中的内容,tabBar作为内容的页签。

1、系统自带tabs案例
@Entry
@Component
struct PageTabs {
  @State message: string = 'Hello World'

  build() {
    Tabs({barPosition:BarPosition.End}){
      TabContent(){
        spring()
      }.tabBar("春天")
      TabContent(){
        summmer()
      }.tabBar("夏天")
      TabContent(){
        autumn()
      }.tabBar("秋天")
    }
    // .vertical(true)
    .scrollable(true)
    .barMode(BarMode.Scrollable)//tabbar可以滚动
  }
}

@Component
struct spring{
  build(){
    Row(){
      Text("春天来了")
    }
  }
}
@Component
struct summmer{
  build(){
    Row(){
      Text("夏天来了")
    }
  }
}
@Component
struct autumn{
  build(){
    Row(){
      Text("秋天来了")
    }
  }
}
2、自定义导航栏:

对于底部导航栏一般作为应用主页面功能区分,为了更好的用户体验,会组合文字以及对应语义图标表示页签内容,这种情况下,需要自定义导航页签的样式。

 

@Entry
@Component
struct PageTabs {
  @State message: string = 'Hello World'
  @State indexSelected:number=0
  controller:TabsController=new TabsController()

  @Builder
  tabStyle(path:string,name:string ,pathSelected:string,index:number){
    Column(){
      Image(this.indexSelected===index?pathSelected:path).size({width:25,height:25})
      Text(name).fontColor(this.indexSelected===index?"#14c145":Color.Black)
    }.width("100%").height(50).onClick(v=>{
         this.indexSelected=index
         this.controller.changeIndex(index)
    })

  }

  build() {
    Tabs({barPosition:BarPosition.End,
     controller:this.controller}){
      TabContent(){
        spring()
      }.tabBar(this.tabStyle('images/admin_.png',"春天",'images/admin.png',0))
      TabContent(){
        summmer()
      }.tabBar(this.tabStyle('images/baoxiu_.png',"夏天",'images/baoxiu.png',1))
      TabContent(){
        autumn()
      }.tabBar(this.tabStyle('images/hetong_.png',"秋天",'images/hetong.png',2))
    }
    // .vertical(true)
    .scrollable(true)
    .onChange(index=>{
      console.log(index+"--------滑动到")
      this.indexSelected=index
    })
    // .barMode(BarMode.Scrollable)//tabbar可以滚动 会导致tabitem充满屏幕
  }
}

@Component
struct spring{
  build(){
    Row(){
      Text("春天来了")
    }
  }
}
@Component
struct summmer{
  build(){
    Row(){
      Text("夏天来了")
    }
  }
}
@Component
struct autumn{
  build(){
    Row(){
      Text("秋天来了")
    }
  }
}

 

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

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

相关文章

Kubernetes篇(一)— kubernetes介绍

目录 前言一、应用部署方式演变二、kubernetes简介三、kubernetes组件四、kubernetes概念 前言 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念、组件和工作原理。 一、应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代&#xff…

PS从入门到精通视频各类教程整理全集,包含素材、作业等(2)

PS从入门到精通视频各类教程整理全集,包含素材、作业等 最新PS以及插件合集,可在我以往文章中找到 由于阿里云盘有分享次受限制和文件大小限制,今天先分享到这里,后续持续更新 初级教程素材 等文件 https://www.alipan.com/s/fC…

哔哩哔哩直播姬有线投屏教程

1 打开哔哩哔哩直播姬客户端并登录(按下图进行操作) 2 用usb连接电脑(若跳出安装驱动的弹窗点击确定或允许),usb的连接方式为仅充电 不要更改usb的连接方式(不然电脑会死机需要重启),此时电脑识别不到该手机设备(因为电脑把它识别为投屏设备) 想要正常连接电脑进行文件传输就按…

沃尔玛百货有限公司 企业网页设计制作 企业html网页成品 跨国公司网页设计开发 web前端开发,html+css网页设计素材,静态html学生网页成品源码

沃尔玛百货有限公司 WalMart 7页面 企业主题 带jquery图片轮播特效 滚动文字 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.or…

Charles抓包配置代理手机连接

Charles下载地址&#xff1a; Charles_100519.zip官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘123云盘为您提供Charles_100519.zip最新版正式版官方版绿色版下载,Charles_100519.zip安卓版手机版apk免费下载安装到手机,支持电脑端一键快捷安装https://www.123pan.com…

哔哩哔哩直播姬第三方obs推流使用教程

1 obs studio下载(官方下载较慢) 链接&#xff1a;https://pan.baidu.com/s/1fIKJkieYIta0gG-sX7Cr6g?pwdz7s9 提取码&#xff1a;z7s9 2 打开哔哩哔哩直播姬客户端并登录(pc版) 3 打开obs客户端进行推流(如果推流不成功,可能是驱动的问题,记得更新下驱动) 首先添加播放源 …

SpringBoot整合腾讯云邮件发送服务非STMP

SpringBoot整合腾讯云邮箱服务 1、pom配置 <!-- 腾讯云邮箱服务--><dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><!-- go to https://search.maven.org/search?qtencen…

Type-C接口取电解决方案LDR6500

随着科技的不断进步&#xff0c;Type-C接口已经成为现代电子设备中不可或缺的一部分。作为一种全新的接口标准&#xff0c;Type-C以其独特的设计和强大的功能&#xff0c;在数据传输和电力传输领域展现出了巨大的潜力。特别是在取电应用方面&#xff0c;Type-C接口正逐渐改变着…

C#手术麻醉系统源码 大型医院手麻系统4大需求是什么?

C#手术麻醉系统源码 大型医院手麻系统4大需求是什么&#xff1f; 手术麻醉临床信息系统有着完善的临床业务功能&#xff0c;能够涵盖整个围术期的工作&#xff0c;能够采集、汇总、存储、处理、展 现所有的临床诊疗资料。通过该系统的实施&#xff0c;能够规范手麻科的工作流程…

vue 内嵌第三方网页

需要将另一个系统嵌套到当前网页中 一、frame 方法一就是通过html的标签 iframe 实现网页中嵌入其他网站 标签属性 属性含义src嵌套的网页地址width设置嵌套网页的宽度&#xff0c;单位为像素height设置嵌套网页的高度&#xff0c;单位为像素frameborder控制嵌套的网页是否…

计算机网络—UDP协议详解:特性、应用

​ &#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;マリンブルーの庭園—ずっと真夜中でいいのに。 0:34━━━━━━️&#x1f49f;──────── 3:34 &#x1f504; ◀…

路径规划——搜索算法详解(二):Floyd算法详解与MATLAB代码

上次总结了Dijkstra算法的案例原理与代码&#xff0c;本文分享第二种比较基础且易懂的方法为Floyd算法&#xff0c;该算法可以有效正确地处理有向图的最短路径问题&#xff0c;与Dijkstra算法不同&#xff0c;Floyd算法是一种动态规划算法&#xff0c;对于稠密图效果显著。原理…

【独立开发前线】Vol.26 【独立开发产品】吉光卡片-让你的文字变得酷炫起来

今天给大家分享一下 独立开发前线 社区成员张小吉 的作品 吉光卡片&#xff1b; 这是一款iOS的APP&#xff0c;下载&#xff1a;吉光卡片&#xff0c;主要功能是帮你制作酷炫的文字卡片&#xff0c;用精美的卡片让你的文字生动起来。 展示效果如下&#xff1a; 你可以用它制作…

中值定理错题本

1 2 一般要构造函数 3 4 5 6 ------------------------------ 7 8 9 10

virtualbox 设置虚拟机 centos 网络

在VirtualBox中为运行CentOS系统的虚拟机配置网络连接&#xff0c;您通常可以选择以下几种网络模式之一&#xff0c;以满足不同的网络需求&#xff1a; NAT (Network Address Translation): 功能&#xff1a;允许虚拟机通过宿主机的网络连接访问互联网&#xff0c;同时也可以从…

C语言: 指针讲解

为什么需要指针? &#xff08;1&#xff09;指针的使用使得不同区域的代码可以轻易的共享内存数据。当然你也可以通过数据的复制达到相同的效果&#xff0c;但是这样往往效率不太好&#xff0c;因为诸如结构体等大型数据&#xff0c;占用的字节数多&#xff0c;复制很消耗性能…

WebGIS 之 Openlayer

1.导入第三方依赖 <link rel"stylesheet" href"https://lib.baomitu.com/ol3/4.6.5/ol.css"> <script src"https://lib.baomitu.com/ol3/4.6.5/ol.js"></script>2.初始化地图 初始化地图new ol.Map({}) 参数target:制定初始化…

[串联] MySQL 存储原理 B+树

InnoDB 是一种兼顾高可靠性和高性能的通用存储引擎&#xff0c;在 MySQL 5.5 之后&#xff0c;InnoDB 是默认的 MySQL 存储引擎。 InnoDB 对每张表在磁盘中的存储以 xxx.ibd 后缀结尾&#xff0c;innoDB 引擎的每张表都会对应这样一个表空间文件&#xff0c;用来存储该表的表结…

【尚硅谷周阳--JUC并发编程】【第十四章--ReentrantLock、ReentrantReadWriteLock、StampedLock讲解】

【尚硅谷周阳--JUC并发编程】【第十四章--ReentrantLock、ReentrantReadWriteLock、StampedLock讲解】 一、面试题二、简单聊聊ReentrantReadWriteLock1、是什么?1.1、读写锁说明1.2、演变1.3、读写锁意义和特点 2、特点2.1、优点2.2、code演示2.3、结论2.4、从写锁->读锁&…

【Week-Y3】修改yolov5s的backbone的第4层和第6层中C3的理论循环次数

修改backbone中C3的循环次数 一、yolov5s.yaml文件解析二、训练三、总结 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 &#x1f4d5;本次任务&#xff1a;将yolov5s网络模型中第4层的C…