Flutter开发(十六)—— BottomNavigationBar底部导航栏(Android原生BottomNavigationView)

底部菜单控件BottomNavigationView的使用 BottomNavigationView实现底部导航栏的整体效果如下图所示: 基本使用 BottomNavigationView控件的主要属性含义: 控件点击时候颜色选择@color/sl_color_green_grey 完整的MainActivity代码 运行的效果图如下: item多的时候,指的是item非选中状态显示文字,有以下几个值:它们依次运行如下图所示 auto和select和i 属性sShifting有关 此时isShifting=true;你会发现auto和 selected的效 阅读详情
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: BottomSetState(),
      theme: ThemeData(
        primarySwatch: Colors.deepPurple, //主题背景颜色
        highlightColor: Colors.purple, //按下按钮时 高亮颜色
        splashColor: Colors.white30,
      ),
    );
  }
}

// 底部导航栏,动态切换选中状态,使用StatefulWidget
class BottomSetState extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _BottomNavigationState();
  }
}

// 加载标签 和 对应页面
class _BottomNavigationState extends State<BottomSetState> {
  //默认选中 0,_currentIndex当前选中
  int _currentIndex = 0;
  //定义List用于存储对应页面
  List<Widget> listLay = List();
  @override
  void initState() {
    //加载 定义的页面 按顺序,从左到右,对应底部导航栏页签
    listLay
      ..add(_layoutTab(Colors.redAccent, '第1个页面'))
      ..add(_layoutTab(Colors.greenAccent, '第2个页面'))
      ..add(_layoutTab(Colors.blueAccent, '第3个页面'))
      ..add(_layoutTab(Colors.purpleAccent, '第4个页面'));
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.white70, //页面背景颜色
        appBar: AppBar(
          // title 中间
          title: Text('RedKey',
              style: TextStyle(
                color: Colors.redAccent,
              )),
        ),
        body: listLay[_currentIndex],
        // 创建底部导航栏
        bottomNavigationBar: BottomNavigationBar(
          // items的标签数大于三个,需要重新设定type
          type: BottomNavigationBarType.fixed,
          // 第几个标签被激活,默认0
          currentIndex: _currentIndex,
          // 切换激活状态,_onTapHandle是回调监听方法
          onTap: _onTapHandle,
          // 激活状态的颜色
          fixedColor: Colors.orangeAccent,
          // items代码从上到下 对应 设备从左到右
          items: [
            BottomNavigationBarItem(
                icon: Icon(Icons.data_usage), //图标
                title: Text('data_usage') //文字
                ),
            BottomNavigationBarItem(
                icon: Icon(Icons.edit_location), title: Text('edit_location')),
            BottomNavigationBarItem(
                icon: Icon(Icons.fast_forward), title: Text('fast_forward')),
            BottomNavigationBarItem(
                icon: Icon(Icons.list), title: Text('List')),
          ],
        ));
  }

  //切换激活状态,_onTapHandle是回调监听方法
  void _onTapHandle(int index) {
    setState(() {
      _currentIndex = index;
    });
  }
}

//模拟一个通用的页面,包含背景颜色和居中文字
class _layoutTab extends StatelessWidget {
  Color _currentColor = Colors.yellow;
  String str = '默认页面';

  _layoutTab(Color color, String str) {
    _currentColor = color;
    this.str = str;
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      // color: _currentColor,
      body: new Container(
        color: _currentColor,
        child: Center(
          child: Text(str,style: TextStyle(fontSize: 38,color: Colors.black),),
        ),
      ),
    );
  }
}

预览效果:
底部导航栏的切换非常流畅
在这里插入图片描述

Android进阶之路 - BottomNavigationView的使用与问题处理方案 底部导航的实现之一为BottomNavigationView,乃是design库下的一款控件,或为Android 5.0的一种,同时根据某篇博文介绍说sdk25以后才可以使用,最好相对高于25.1,因为有一些问题没有处理好。 闲话不多唠,此篇文章是根据多篇博文,进行总结性的一篇记录,其中的知识点都已经手动敲打过一次,请继续前行! 阅读详情

相关推荐

掌握Android底部导航的实现技巧:BottomNavigationView与Fragment的结合

本文还有配套的精品资源,点击获取 简介: BottomNavigationView 是Android开发中用于实现底部导航的核心组件,它允许用户在应用的主要功能模块间切换。本文将详细介绍如何利用此组件创建具有动画效果的tab切换,并结合Fragment使用,同时实现点击时的水波纹效果。我们将探讨如何在布局文件中添加 BottomNavigationVi...

weixin_42263617的博客 3147

BottomNavigationView--基本使用总结

1、BottomNavigationView 是什么? BottomNavigationView 是安卓官方提供的底部导航栏,能够方便的实现下图中的底部导航效果。 Paste_Image.png 按照 官方的设计规范 https://material.io/guidelines/components/bottom-navigation.html# 当底部导航的标签在 3--5 个之间的时...

lwh156541064的博客 6689

掌握Android BottomNavigationView的开发与最佳实践

Android BottomNavigationView是Material Design组件库中的一个组件,它提供了在应用底部快速切换不同页面的功能。通过使用BottomNavigationView,可以提供一个简洁而直观的导航界面,增强用户体验。在Android开发中,依赖库可以被看作是项目的零部件,它们提供了各种有用的功能和组件,允许开发者在自己的应用中使用第三方代码。依赖库的导入极大地简化了Android应用开发过程,让开发者可以重用代码,避免重复造轮子,缩短开发周期。

weixin_42601608的博客 737

Android关于BottomNavigationView使用指南

BottomNavigationView

QG 5819

一文讲透 .claude/ 文件夹:Claude Code 团队配置指南和最佳实践

本文系统梳理了ClaudeCode配置框架,旨在解决实际落地中的常见困惑。文章从五层作用域体系(组织策略、命令行参数、本地覆盖、项目级、用户级)切入,详细解析了CLAUDE.md、rules、skills、agents等核心组件的定位与配合关系。重点强调了"确定性规则"与"概率性建议"的分层设计:权限控制和安全边界应通过settings.json和hooks实现,而工作约定和编码规范适合放在CLAUDE.md。文中提供了可直接套用的最小配置方案,并总结了10大常见踩坑

973

解决Calibre中license的错误

本次解决了Calibre在Cadence 617 virtuoso版本中运行不了的错误,在遇到问题的时候,我也跟你们一样,首先是上网查询为什么运行不了呢?明明我安装了之后里面有Calibre的,我当时也是这样的疑惑,一点Calibre运行LVS的时候,一片空白,然后就出现了license的错误,后来点点点,看看看,搜搜搜,最终解决了这个问题。虚拟机是VMware16版本,cadence617,Calibre是2015版本。旨在记录遇到的实际问题。

yytu231的博客 1万+

Android 底部导航栏(一、BottomNavigationView+Menu+Fragment)

现在常用的App主页都会有一个底部导航栏,根据需求也使用过好几种方法进行实现,于是想着还是总结一下,今天还写一个简单的BottomNavigationView方法来实现这个功能它是android原生的一个底部导航框架,一般和Fragment一起使用。xml布局:最外层的layout不用管,那是databinding框架的根布局,主要的布局FrameLayout来装载fragment列表,BottomNavigationView实现底部导航栏,最后监听绑定实现点击切换 其中BottomNavigation

Android 领域开发程序员,希望通过写博客的方式不断的总结提升自己,大家共同进步哦! 1万+

可变形卷积(Deformable Conv)原理解析与torch代码实现

图6为可变形卷积示意图。图1所示为普通卷积在输入特征图上进行卷积计算的过程,卷积核大小为3*3,在输入特征图尺寸为7*7上进行卷积,将卷积核权重与输入特征图对应位置元素相乘并求和得到输出特征图元素,按一定方式滑动窗口就能计算得到整张输出特征图。图6所示,在input feature map上普通卷积操作对应卷积采样区域是一个卷积核大小的正方形(绿框),而可变形卷积对应的卷积采样区域为一些蓝框表示的点,这就是可变形卷积与普通卷积的区别。先来一张图感受一下,图3为标准卷积与可变形卷积的卷积示例。

panghuzhenbang的博客 5万+

专注计时与时间记录应用HarmonyOS ArkTS API 24引入了 AppStorage 作为全局状态容器,将时间记录列表、项目列表等跨页面共享的数据统一托管

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。本文以一个名为"智能账单"的三标签页记账应用为切入点,逐层拆解其数据模型设计、@Builder 组件复用策略、@State 状态管理机制、条件渲染导航模式,以及静态写死渲染与动态循环渲染之间的性能权衡,为

2401_86031952的博客 250

告别OFDM卡顿:用MATLAB手把手仿真AFDM波形,搞定高铁、无人机通信的时变信道难题

本文详细介绍了如何使用MATLAB仿真AFDM波形,解决高铁和无人机通信中的时变信道难题。通过仿射变换技术,AFDM在多普勒频移严重的场景下表现优异,显著提升通信质量。文章包含参数配置、波形生成、性能对比等实战内容,适合通信工程师和研究人员参考。

weixin_27014595的博客 318

MMCV安装后报错‘from mmcv import Config’?别慌,这是MMCV 2.0的锅!快速降级回退MMCV 1.x全指南

本文详细解析了MMCV 2.0版本升级导致的‘from mmcv import Config’报错问题,提供了从诊断到降级回退MMCV 1.x的完整解决方案。通过pip和OpenMIM工具链的实操指南,帮助开发者快速解决版本冲突,确保项目稳定运行。

weixin_29102619的博客 263

宠物寄养与遛狗服务应用基于HarmonyOS API 24添加宠物的模态弹窗系统,通过自定义的 Stack 叠层组件替代系统默认弹窗,在保持 HarmonyOS Design 视觉风格一致性

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。

2401_86031952的博客 153

LabVIEW波形图表时间轴设置:三种方法实现横坐标显示日期时间

在数据采集与设备监控场景中,波形图表的横坐标默认显示采样点序号而非日期时间,这给工程师分析历史数据带来不便。理解时间标识(Timestamp)的本质——一个自1904年起算的双精度秒数,是解决问题的关键。时间轴设置既是显示格式问题,更是数据层与显示层的协同设计。通过属性节点动态生成刻度标签、将时间标识数组直接作为X轴数据、或使用波形数据(Waveform)类型绑定t0与dt,分别适用于固定点数显示、非等间隔事件记录和等间隔连续采样等不同需求。合理选择方案并注意缓冲区预分配与时间连续性处理,可让波形图表准确呈

weixin_33416697的博客 253

基于HarmonyOS API 24实现WishItem 是 @Observed 对象,调用 updateProgress() 修改 progress 值后,“数据驱动 UI“的模式

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。

2401_86031952的博客 222

CANbus收发器ADM3053BRWZ-REEL7应用原理图设计

ADM3053 在 CAN 协议控制器与物理层总线之间创建一个 完全隔离的接口。该器件具有限流和热关断特性,可防止输出短路。额定温 度范围为工业温度范围,提供 20 引脚、宽体 SOIC 封装。该器件采用 5 V 单电源供电, 提供完全隔离的 CAN 解决方案。ADM3053 是一款隔离式控制器区域网络 (CAN) 物理层收 发器,集成隔离 DC/DC 转换器,符合 ISO 11898 标准。该器件采用 ADI 公司的。Coupler® 技术,将双通道隔离器、 CAN 收发器和 ADI 公司的。

zhusl6688的博客 1235

YTM32B1M SDK解析31:软件I2C驱动详解

YTM32B1M微控制器软件I2C驱动解析 本文详细介绍了YTM32B1M微控制器中通过GPIO引脚模拟I2C总线的软件实现方案。核心内容包括: 驱动架构:采用swi2c_config_t配置结构体和swi2c_state_t状态结构体管理I2C参数 功能接口:提供初始化、数据传输(主/从模式)、底层控制等API 应用示例:包含基本配置、EEPROM读写、传感器数据采集、总线扫描等典型应用场景 优化建议:给出引脚选择、时序配置、错误处理等方面的最佳实践 该驱动在硬件I2C资源不足时提供可靠替代方案,支持标准

VehSwHwDeveloper的博客 158

关于BottomNavigationView的使用姿势都在这里了

一,基本用法 1,首先需要添加依赖: implementation 'com.google.android.material:material:1.1.0' 2,布局文件中引入: <com.google.android.material.bottomnavigation...

G的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android BottomNavigationView 底部导航栏使用详解

BottomNavigationView是官方提供可以实现底部导航的组件,最多支持5个item,主要用于功能模块间的切换,默认会包含动画效果。

Billy_Zuo的博客 5614

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android studio中使用ViewPager和BottomNavigationView实现底部导航栏和碎片的同步切换

本教程详细全面,对新手友好

lb220303082的博客 9833

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【Flutter】底部导航栏页面框架 ( BottomNavigationBar 底部导航栏 | PageView 滑动页面 | 底部导航与滑动页面关联操作 )

一、BottomNavigationBar 底部导航栏、 二、PageView 滑动页面、 三、BottomNavigationBar 与 PageView 关联、 四、完整代码示例、 1、核心导航组件、 2、四个切换页面、 3、应用启动主界面、 4、运行效果、 五、相关资源、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 3433

BottomNavigationView入门

BottomNavigationView 是 Android 官方提供的底部导航栏组件,旨在简化应用程序中不同功能页面之间的切换。 它通常用于显示三个到五个主要功能项,方便用户快速访问应用的核心部分。 BottomNavigationView一般与fragment配合使用。具体这样配合使用: - BottomNavigationView+FragmentContainerView+Fragment - BottomNavigationView+ViewPager+Fragment

know_ledge的博客 1509

【Android】BottomNavigationView的使用笔记

我们在使用控件的时候,总是有两个必须填写的值,一个是`width`,一个是`height`,而它们分别对应我们印象中的物体的长度和宽度。当控件被遮盖住,这时候我们就需要指定控件的`Z`轴高度了。   何为`Z`轴高度?比如我们在三维空间中定义一个物体的具体位置,需要知道它的空间属性值,通过`XYZ`轴来精确定。这里的`Z`轴高度,其实就是指真正的“高度”,而不是宽度! 总结: 让添加的`ImageView`在`Z`轴上的高度 大于等于`BottomNavigationView`的。

大模型训练 2937

安卓底部导航栏BottomNavigationView

实现安卓底部导航栏,google为我们提供了。第三方大佬提供了简易版BottomTabBar类。

m0_57150356的博客 2207

Flutter Navigator基础使用

Navigator的使用分为两部分: 本节说一些基本操作,如果你已经掌握了Navigator的基本跳转姿势,请移步Flutter Navigator品如用法 1.路由最基本的使用-跳转和退出 大多数App都包含了许多页面用来呈现不同种类的信息。例如:一个app可能存在“商品列表页”,当点击item的时候又会跳转到对应“商品详情”页面。 在Flutter中,页面被称之为route(路由)。在...

u013894711的专栏 3399

【Android】底部导航栏【BottomNavigationView】+【ViewPage2】

底部导航栏

每天不是在写bug就是在写bug的路上 3800

【flutter 】导航栏

1、 import 'package:flutter/material.dart'; import 'package:baby_one/View/BottomNavigation/navigation_icon_view.dart'; import 'package:baby_one/View/Home/Home.dart'; import 'package:baby_one/View/Home...

ivy_doudou的博客 381
上一篇: Flutter开发(十五)——TabBar标签栏(Android原生TabLayout)
下一篇: Flutter开发(十七)—— 路由
RedKeyer
博客等级 码龄11年 33粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值