在HarmonyOS NEXT中使用ArkTS实现一个完整的底部选项卡功能,可以通过以下几个步骤来完成:

  1. 创建Tabs组件:使用Tabs组件来创建底部导航栏,并通过barPosition属性设置其位置为底部(BarPosition.End)。

  2. 添加TabContent子组件:在Tabs组件内部,为每个页面创建一个TabContent子组件,这些子组件将包含每个选项卡页面的内容。

  3. 配置TabBar:通过TabContenttabBar属性来配置每个选项卡的标题和图标。可以使用自定义函数tabBuilder来构建每个选项卡的样式,包括图标和文本。

  4. 设置状态和控制器:使用@State装饰器来定义当前选中的选项卡索引,并使用TabsController来控制选项卡之间的切换。

  5. 自定义样式:可以通过barModescrollable等属性来自定义导航栏的样式和行为,例如设置为固定宽度或滚动显示。

  6. 事件处理:通过onChange事件来监听选项卡的切换,并更新当前状态。

以下是一个简单的代码示例,展示了如何使用ArkTS实现底部选项卡功能:

@Entry
@Component
struct BottomTabExample {
controller: TabsController = new TabsController()
@State current: number = 0 tabBuilder($$: { index: number; label: string; normalIcon: Resource; selectIcon: Resource }) {
Column() {
Image(this.current === $$.index ? $$.selectIcon : $$.normalIcon).width(26)
Text($$.label)
.fontSize('12fp')
.fontColor(this.current === $$.index ? '#62C9D0' : '#909090')
.margin({ top: 3 })
}
.width('100%')
.onClick(() => {
this.current = $$.index
this.controller.changeIndex(this.current)
})
} build() {
Column() {
Tabs({ barPosition: BarPosition.End, controller: this.controller }) {
TabContent() {
Text('首页的内容')
}.tabBar(this.tabBuilder({
index: 0,
label: '首页',
normalIcon: $r('app.media.tabbar11'),
selectIcon: $r('app.media.tabbar12')
}))
TabContent() {
Text('发现的内容')
}.tabBar(this.tabBuilder({
index: 1,
label: '发现',
normalIcon: $r('app.media.tabbar21'),
selectIcon: $r('app.media.tabbar22')
}))
// ... 其他TabContent配置
}
.width('100%')
.barMode(BarMode.Fixed)
.scrollable(true)
.onChange(((index: number) => {
this.current = index
}))
}
.width('100%')
.backgroundColor('#f2f2f2')
}
}

我们创建了一个底部选项卡,每个选项卡都有对应的内容和图标。当用户点击不同的选项卡时,tabBuilder函数会更新当前选中的选项卡索引,并且TabsController会处理页面的切换。通过onChange事件,我们可以监听选项卡的变化并执行相应的逻辑。学习鸿蒙 NEXT 开发,国产应用开发,全靠你我他,加油。

HarmonyOS NEXT 底部选项卡功能的更多相关文章

  1. Fragment实现底部选项卡切换效果

    现在很多APP的样式都是底部选项卡做为首页的,实现这样的效果,我们一般有这样几种方式,第一,最屌丝的做法,我直接自定义选项卡视图,通过监听选项卡视图,逻辑控制内容页的切换,这样做的想法一般是反正这几个 ...

  2. HTML5 开发APP(头部和底部选项卡)

    我们开发app有一定固定的样式,比如头部和底部选项卡部分就是公共部分就比如我在做的app进来的主页面就像图片显示的那样 我们该怎么实现呢,实现我们应该建一个主页面index.html,然后建五个子页面 ...

  3. TabBottomFragmentLayout【自定义底部选项卡区域(搭配Fragment)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 自定义底部选项卡布局LinearLayout类,然后配合Fragment,实现切换Fragment功能. 缺点: 1.底部选项卡区域 ...

  4. FragmentTabHostBottomDemo【FragmentTabHost + Fragment实现底部选项卡】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用FragmentTabHost实现底部选项卡效果. 备注:该Demo主要是演示FragmentTabHost的一些设置和部分功能 ...

  5. TabLayoutBottomDemo【TabLayout实现底部选项卡】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用TabLayout实现底部选项卡切换功能. 效果图 代码分析 1.演示固定模式的展现 2.演示自定义布局的实现 使用步骤 一.项 ...

  6. MUI框架开发HTML5手机APP(二)--页面跳转传值&底部选项卡切换

      概 述 JRedu 在上一篇博客中,我们学习了如何使用Hbuilder创建一个APP,同时如何使用MUI搭建属于自己的第一款APP,没有学习的同学可以戳链接学习: http://www.cnblo ...

  7. MUI框架-12-使用原生底部选项卡(凸出图标案例)

    MUI框架-12-使用原生底部选项卡(凸出图标案例) 今天,用 mui 做 app 时,遇到了可能各位都遇到过的头疼问题:底部中间图标凸起,如下图: 最后有源代码 [提示]:有人问我在 HBuilde ...

  8. webAPP制作框架Ionic--构建APP侧边栏 底部选项卡 轮播图 加载动画

    超好用的移动框架--Ionic Ionic是一个轻量的手机UI库,具有速度快,界面现代化.美观等特点. 为了解决其他一些UI库在手机上运行缓慢的问题,它直接放弃了IOS6和Android4.1以下的版 ...

  9. mui底部选项卡切换实现

    MUI提供了两种webview和div模式,来实现底部选项卡切换 效果相同,div是在同一个页面实现所有切换块的页面,根据id导航,而webview是由多个页面组成,形成页面之间的来回跳转

  10. 原生js、jQuery实现选项卡功能

    在大家在网上平常浏览网页的时候,想必各位都会看到选项卡功能,在这里给大家详解一下用原生js.jQuery如何来写一些基本的选项卡 话不多说,先给各位看一下功能图:              好了,下边 ...

随机推荐

  1. selenium高亮显示定位到的页面元素

    from selenium import webdriver import unittest,time def highLightElement(driver,element): #封装好的高亮显示页 ...

  2. 【MySQL】DB-Link 跨库访问

    相关说明: https://blog.csdn.net/qq_48721706/article/details/124088963 DB-LINK以一个远程访问方式访问其他MYSQL实例 连接实例和被 ...

  3. 【Dos-BatchPrograming】02

    学习参考: https://www.bilibili.com/video/BV1Qv411q7bN?p=2 --1.算数运算 使用Windows终端进行运算操作时需要声明对应的命令: set /a 运 ...

  4. 深度学习的始祖框架,grandfather级别的框架 —— Theano —— 示例代码学习(5)

    代码1:(求雅可比矩阵, jacobian矩阵求解) import theano from theano import tensor # Creating a vector x = tensor.dv ...

  5. 使用浪潮AI计算平台之分布式计算(Tensorflow框架下 PS/Worker模式下的异步计算)

    虽然Tensorflow一直都是支持分布式计算的,但是由于只有一台电脑,一个GPU,所以别说分布式的tensorflow的使用了,就是单机多卡都是没有使用过的,由于后来可以有机会使用这个浪潮的AI计算 ...

  6. Linux系统配置 Samba客户端

    参考: https://blog.csdn.net/m0_63624418/article/details/127856957 本文为局域网中linux和window共享文件方案--samba后续篇. ...

  7. python语言绘图:绘制贝叶斯方法中最大后验密度(Highest Posterior Density, HPD)区间图的近似计算(续)

    代码源自: https://github.com/PacktPublishing/Bayesian-Analysis-with-Python 内容接前文: python语言绘图:绘制贝叶斯方法中最大后 ...

  8. C# Cefsharp 设置代理方法

    前提条件 为了实现在cefsharp里面设置代理,首先在创建一个ChromiumWebBrowser的时候,检查是否使用了以下代码 settings.CefCommandLineArgs.Add(&q ...

  9. JDBC Vertica Source Connector 使用文档

    支持以下引擎 Spark Flink SeaTunnel Zeta 关键特性 批处理 精确一次性处理 列投影 并行处理 支持用户自定义拆分 支持查询 SQL 并实现投影效果 描述 通过 JDBC 读取 ...

  10. shell脚本中$0 $1 $# $@ $* $? $$ 的各种符号意义详解

    一.概述 shell中有两类字符:普通字符.元字符. 1. 普通字符 在Shell中除了本身的字面意思外没有其他特殊意义,即普通纯文本: 2. 元字符 是Shell的保留字符,在Shell中有着特殊的 ...