# BottomNavigationF **Repository Path**: blueskyliu/BottomNavigationF ## Basic Information - **Project Name**: BottomNavigationF - **Description**: 是一个开源项目 lg 是公司项目缩写 但是跟公司项目没关系 只是名字 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-06-21 - **Last Updated**: 2021-11-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # bottomNavigationF > 这个组件提供类似flutter的scaffold小部件的解决方案 提供了 顶部导航 导航点击事件以及 底部切换点击事件 ## 安装 ```xml com.gitee.blueskyliu BottomNavigationF 0.0.2 ``` ## 方法 **工具类RouterUtil** * 跳转 Ability页参数配置 |方法名|参数 | 选填参数| |--|--|--| | navigate |AbilitySlice abilitySlice 当前页, Class classTo 目标页,Map map |Map map| * 跳转 AbilitySlice 页参数配置 即 跳转页面 |方法名|参数 | 选填参数| |--|--|--| | navigate |AbilitySlice abilitySlice当前页 , AbilitySlice abilitySliceTo 目标页,Map map|Map map| **tabbar工具方法** * 获取方法 Scaffold new出的对象 掉用 getFractionUtil 获取工具 示例代码仅供参考 ```java Scaffold init = new Scaffold((((FractionAbility) getAbility())),appBar, body, bottomNavigation).init(); Component scaffold = init.getScaffold(); FractionUtil fractionUtil = init.getFractionUtil(); fractionUtil.show(1);//打开底部导航索引为1 ``` ## 使用案例 #### 红色框圈起来的都可以点击 有监听事件 - ![bottomNavigationF](./demo.gif) - 这个组件提供类似flutter的scaffold小部件的解决方案 ### 准备 1. fractionPage页面 2. BottomNavViewModel的类里面的数据模型 3. 修改 MainAbility 继承类为FractionAbility ### 初始化实例 > 根据实际情况修改你们的需求 ```java DirectionalLayout parse =(DirectionalLayout) LayoutScatter.getInstance(getContext()).parse(ResourceTable.Layout_ability_main, null, false); AppBar appBar = new AppBar(); appBar.setTitle("自定义导航"); appBar.setLeadingId(ResourceTable.Media_arrow_left); BottomNavigation bottomNavigation = new BottomNavigation(); BottomNavViewModel bottomNavViewModel = new BottomNavViewModel(); bottomNavigation.setBottomNavItems(bottomNavViewModel.initBottomNavFractions()); List fractions = bottomNavViewModel.initBottomNavFractionsBody(this); Body body = new Body(); body.setFractions(fractions); // appBar Scaffold init = new Scaffold((((FractionAbility) getAbility())),appBar, body, bottomNavigation).init(); Component scaffold = init.getScaffold(); parse.addComponent(scaffold); init.setOnNavClickListener(new OnNavClickListener() { @Override public void onLeading() { LogUtil.info("ontapNav", "点击了"); } }); init.setOnItemClickListener(new OnItemClickListener() { @Override public void onTap(int index) { LogUtil.info("自定义监听", Integer.toString(index)); } }); setUIContent(parse); ``` ## 当前项目遇到的问题 问题文件 package com.llt.bottomnavigationf 包 中的Scaffold类 ```java /** * 初始化 数据 fraction 这里放到 asyncDispatch异步线程中 就没问题不会出现闪退问题 */ //问题原因是 FractionUtil类中的 initTabberPage方法 submit操作导致的 abilitySlice.getUITaskDispatcher().asyncDispatch(new Runnable() { @Override public void run() { fractionUtil=new FractionUtil( body.getFractions(), currentSaveIndex, abilitySlice, ResourceTable.Id_scaffold_main_content); } }); ``` ## 谁知道具体原因的可以联系我 如果方便 群号 953344438