【Harmony3.1/4.0】笔记七-选项卡布局

概念

当页面信息较多时,为了让用户能够聚焦于当前显示的内容,需要对页面内容进行分类,提高页面空间利用率。Tabs组件可以在一个页面内快速实现视图内容的切换,一方面提升查找信息的效率,另一方面精简用户单次获取到的信息量。

底部导航

底部导航是应用中最常见的一种导航方式。底部导航位于应用一级页面的底部,用户打开应用,能够分清整个应用的功能分类,以及页签对应的内容,并且其位于底部更加方便用户单手操作。底部导航一般作为应用的主导航形式存在,其作用是将用户关心的内容按照功能进行分类,迎合用户使用习惯,方便在不同模块间的内容切换。

顶部导航

当内容分类较多,用户对不同内容的浏览概率相差不大,需要经常快速切换时,一般采用顶部导航模式进行设计,作为对底部导航内容的进一步划分,常见一些资讯类应用对内容的分类为关注、视频、数码,或者手机的主题应用中对主题进行进一步划分为图片、视频、字体等。

侧边导航

侧边导航是手机应用较为少见的一种导航模式,更多适用于平板横屏界面,用于对应用进行导航操作,由于用户的视觉习惯是从左到右,侧边导航栏默认为左侧侧边栏。

实现侧边导航栏需要设置Tabs的属性vertical为true。在底部导航和顶部导航实现中,其默认值为false,表明内容页和导航栏垂直方向排列。

选项卡布局嵌套

自定义导航栏

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

系统默认情况下采用了下划线标志当前活跃的页签,而自定义导航栏需要自行实现相应的样式,用于区分当前活跃页签和未活跃页签。

设置自定义导航栏需要使用tabBar的参数,以其支持的CustomBuilder的方式传入自定义的函数组件样式。例如这里声明TabBuilder的自定义函数组件,传入参数包括页签文字title,对应位置index,以及选中状态和未选中状态的图片资源。通过当前活跃的currentIndex和页签对应的targetIndex匹配与否,决定UI显示的样式。

import promptAction from '@ohos.promptAction';
@Entry
@Component
struct Seven{//默认第一个选项卡被选中@State currentIndex:number=0;//自定义选项卡@Builder TabBuilder(title: string, targetIndex: number, selectedImg: Resource, normalImg: Resource) {Column() {Image(this.currentIndex === targetIndex ? selectedImg : normalImg).size({ width: 40, height: 40 })Text(title).fontColor(this.currentIndex === targetIndex ? '#1698CE' : '#6B6B6B').fontSize(20)}.width('100%').height(50).justifyContent(FlexAlign.Center)}build(){
//当页面信息较多时,为了让用户能够聚焦于当前显示的内容,需要对页面内容进行分类,提高页面空间利用率。// Tabs组件可以在一个页面内快速实现视图内容的切换,一方面提升查找信息的效率,另一方面精简用户单次获取到的信息量。Tabs({barPosition:BarPosition.End}){TabContent(){Tabs({barPosition:BarPosition.Start}){TabContent(){Text("关注的内容").width("100%").height("100%").backgroundColor("#74f0").fontColor(Color.White).fontSize(30).textAlign(TextAlign.Center)}.tabBar({text:"关注",})TabContent(){Text("视频的内容").width("100%").height("100%").backgroundColor("#70f8").fontColor(Color.White).fontSize(30).textAlign(TextAlign.Center)}.tabBar({text:"视频",})TabContent(){Text("游戏的内容").width("100%").height("100%").backgroundColor("#7f0f").fontColor(Color.White).fontSize(30).textAlign(TextAlign.Center)}.tabBar({text:"游戏",})TabContent(){Text("数码的内容").width("100%").height("100%").backgroundColor("#70ff").fontColor(Color.White).fontSize(30).textAlign(TextAlign.Center)}.tabBar({text:"数码",})TabContent(){Text("科技的内容").width("100%").height("100%").backgroundColor("#7f6f").fontColor(Color.White).fontSize(30).textAlign(TextAlign.Center)}.tabBar({text:"科技",})}.width("100%").height("100%")}.tabBar(this.TabBuilder("首页",0,$r("app.media.tab1"),$r("app.media.tab1")))TabContent(){Text("推荐的内容").width("100%").height("100%").backgroundColor("#70f0").fontColor(Color.White).fontSize(30).textAlign(TextAlign.Center)}.tabBar(this.TabBuilder("推荐",1,$r("app.media.tab2"),$r("app.media.tab2")))TabContent(){Text("发现的内容").width("100%").height("100%").backgroundColor("#700f").fontColor(Color.White).fontSize(30).textAlign(TextAlign.Center)}.tabBar(this.TabBuilder("发现",2,$r("app.media.tab3"),$r("app.media.tab3")))TabContent(){Text("我的内容").width("100%").height("100%").backgroundColor("#70ff").fontColor(Color.White).fontSize(30).textAlign(TextAlign.Center)}.tabBar(this.TabBuilder("我的",3,$r("app.media.tab4"),$r("app.media.tab4")))}.width("100%").height("100%")//设置选项卡改变事件.onChange((index)=>{this.currentIndex=indexpromptAction.showToast({message:index.toString()})})//设置选项卡垂直显示,默认为水平显示,配合设置选项卡的位置进行上下左右位置的调整.vertical(false)//设置选项卡的模式是拉伸模式还是滚动模式.barMode(BarMode.Fixed).barHeight(80)}
}

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

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

相关文章

源码编译framework.jar 并成功导入android studio 开发

一、不同安卓版本对应路径 Android N/O: 7 和 8 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar Android P/Q: 9 和 10 out/soong/.intermediates/frameworks/base/framework/android_common/combined/framework.jar Android R: 11以上 out/so…

第1章 手写WebServer

1.1 Web原理 1.1.1 Web概述 Web是指互联网上的万维网(World Wide Web),是一个由超文本、超链接和多媒体内容组成的信息空间。Web的基础技术是HTTP协议、URL、HTML、CSS和JavaScript等。Web被广泛应用于信息检索、在线购物、社交媒体、在线游…

揭秘APP收益:养机流程带来的盈利秘诀

在这个高速发展的数字时代,手机应用(APP)已成为人们日常生活中不可或缺的工具。随着移动设备的普及和网络技术的不断进步,APP市场呈现出前所未有的活力和潜力。今天,我们将深入探讨一个特殊的高效APP运营模式——通过广…

18 如何设计微服务才能防止宕机?

在上一讲里,介绍了构建一个稳健的微服务的具体法则:防备上游、做好自己、怀疑下游, 并介绍了为什么要防备上游,以及一些防备上游的具体手段。 在本讲里,咱们一起来学习,做好微服务自身的设计和代码编写的常…

大小鼠无创血压测量系统KT-104

大小鼠无创血压测量分析系统又称鼠尾动脉血压仪,是新一代测量鼠血压产品,系统包含软件、采集器、充放气装置等组成。 详情介绍: 一、工作原理: 该仪器测量工作原理与用普通人体血压计量人体动脉血压的克氏音原理类似。高敏脉搏换…

《QT实用小工具·四十八》趣味开关

1、概述 源码放在文章末尾 该项目实现了各种样式的趣味开关: 1、爱心形状的switch开关,支持手势拖动、按压效果 2、线条样式的3种开关 项目demo演示如下所示: 使用方式: 1、sapid_switch文件夹加入工程,.pro文件中…

最新版pycharm安装教程

目录 PyCharm 简介 访问 PyCharm 官网: 选择版本: 这里我们选择社区版即可 环境变量的配置 第一步 第二步 第三步 Pycharm的使用 【报错解决】 通用注意事项: PyCharm 简介 ​ PyCharm是一种Python IDE(Integrated Devel…

ABB机械臂3HAC2492-1控制柜电缆维修思路

ABB机器人控制柜是机器人运行的核心部件,而电缆则是控制柜与机器人之间的桥梁。当出现ABB工业机械手控制柜电缆故障时,会影响机器人的正常运行,甚至可能导致安全事故。ABB机械臂3HAC2492-1控制柜信号线缆维修步骤 1. 拆下控制柜电缆&#xff…

Oracle索引组织表与大对象平滑迁移至OceanBase的实施方案

作者简介:严军(花名吉远),十年以上专注于数据库存储领域,精通Oracle、Mysql、OceanBase,对大数据、分布式、高并发、高性能、高可用有丰富的经验。主导过蚂蚁集团核心系统数据库升级,数据库LDC单元化多活项目&#xff…

C语言例题31:在屏幕上显示一个菱形

题目要求&#xff1a;在屏幕上显示一个菱形 #include <stdio.h>void main() {int i, j;int x;printf("输入菱形行数(3以上的奇数&#xff09;&#xff1a;");scanf("%d", &x);//显示菱形上面的大三角形for (i 1; i < (x 1) / 2; i) {for (…

缓解程序员工作压力:保持高效创新的方法与经验分享

文章目录 每日一句正能量前言工作与休息的平衡心理健康与自我关怀社交与网络建设后记 每日一句正能量 不要抱怨你的伴侣丑&#xff0c;不要抱怨你没有一个好爸爸&#xff0c;不要抱怨你的工作差&#xff0c;不要抱怨没人赏识你。现实有太多的不如意&#xff0c;就算生活 给你的…

汇川AM400PLC编码器转速测量功能块(M法测速)

M法测速的原理和相关代码,大家可以参考相关专栏文章,常用链接如下: 1、编码器M法测速仿真 编码器M法测速仿真(Simulink)_mt法测速 simulink-CSDN博客文章浏览阅读2k次。编码器M法和T法测速的详细讲解可以参看下面的文章链接,这里不再赘述,这里主要介绍Simulink里建模仿真…

python程序设计语言超详细知识总结

Python 首先 python 并不是简单&#xff0c;什么语言都有基础和高级之分&#xff0c;要想掌握一门语言&#xff0c;必须把高级部分掌握才行。 HelloWorld helloWorld.py print(hello, world)数据类型与变量 变量的数据类型数据类型描述变量的定义方式整数型 (int)整数&…

吴恩达2022机器学习专项课程(一)8.1 过拟合

目录 什么是过拟合&#xff1f;如何解决过拟合&#xff1f;什么是泛化&#xff1f;它跟过拟合有什么关系&#xff1f;过拟合案例线性回归线性回归的欠拟合线性回归较好的拟合线性回归的过拟合 逻辑回归逻辑回归的欠拟合逻辑回归的较好的拟合逻辑回归的过拟合 总结 什么是过拟合…

Prometheus+Grafana多方位监控

PrometheusGrafana多方位监控 契机 ⚙ 最近发现火山引擎有托管的Prometheus,可是当前是邀测阶段。并且发现火山云的ECS是自带开机自启的exporter的。刚好需要搭建一套服务器监控&#xff0c;所以研究了一套Prometheus监控&#xff0c;包含linux主机监控nginx监控es监控rabbitM…

数据库(MySQL)—— 数据类型

数据库&#xff08;MySQL&#xff09;—— 数据类型 MySQL中的数据类型数值类型字符串类型时间戳类型 一个实例 我们今天来看MySQL中的数据类型&#xff1a; MySQL中的数据类型 MySQL中的数据类型有很多&#xff0c;主要分为三类&#xff1a;数值类型、字符串类型、日期时间类…

Linux的学习之路:21、线程(1)

摘要&#xff1a; 本章说一下线程 目录 摘要&#xff1a; 一、回忆一下 二、如何理解线程 三、命令行看线程 四、利用函数进行使用 五、本章总结 1、线程的优点 2、线程的缺点 3、线程的异常 4、线程的用途 一、回忆一下 1、exe就是一个文件 2、我们的可执行程序…

监控摄像机如何选购?

在选购监控摄像机时&#xff0c;需了解其基本知识&#xff0c;如分辨率、帧率、存储方式等。根据需求选择合适的产品&#xff0c;关注夜视功能、品牌和售后服务。预算和性价比同样重要。这样才能选到实用又安全的监控摄像机&#xff0c;提高生活品质。摘要由作者通过智能技术生…

Scott Brinker:16年后,当前的(而非未来的)Martech已经出现,但分布不均。

杜克大学、德勤和美国营销协会共同开展的名为「CMO调查」 的两年一度的项目&#xff0c;是营销行业内的一项重要研究项目&#xff0c;已经持续了十多年。该调查的组织工作做得非常好&#xff0c;每次发布我都迫不及待地想要阅读。 我特别兴奋地阅读了刚刚发布的2024年春季版&a…

MySQL加减间隔时间函数DATE_ADD和DATE_SUB的详解

目录 前言语法示例代码运用 前言 mysql中内置函数date_add 和 date_sub能对指定的时间进行增加或减少一个指定的时间间隔&#xff0c;返回的是一个日期。 语法 添加时间间隔 DATE_ADD(date,INTERVAL expr type)SELECT DATE_add(NOW(),INTERVAL -7 DAY);//获取7天前的日期 S…