APP开发之选项卡式首页制作——BottomNavigationView

9 篇文章 0 订阅
8 篇文章 0 订阅

对于无突出选项的菜单栏来说,可以使用Matiral Design提供的BottomNavigationView+ViewPager+Fragment实现

BottomNavigationView简单介绍:

1、建议标签个数在3~5之前,多了会报错,少了。。。emmmmm简单尝试过两个标签的好像没事,但是就两个标签我觉得没必要用这个了

2、控件默认3个便签是文字会显示,超过三个标签只显示选中项的文字。当然这个通过代码可以设置

3、不能实现那种某一项突出放大的效果——就是像中间放个大加号的那种菜单栏,它的每个选项控件大小是一致的

4、其选项通过layout/menu/xxx文件 定义,建议选项icon使用svg图片,以便选项icon颜色根据选择情况变化

4、想到了再补......................

实现:

1、在layout中添加BottomNavigationView和ViewPager控件

labelVisibilityMode : 设置菜单文字,四个可选项,也可在代码中通过setLableVisibilityMode来设置

a) auto 就是上面说的默认情况

b) labeled 始终显示文字

c) selected 只显示选中项的文字

d) 始终不显示文字

menu : 对应menu文件夹下的选项文件,几个标签就对应几个Item

小提示:对于svg图片可以先在android提供的图标库里面查找,可直接生成svg图片。通过New-Vector Asset可以进入,记得放在drawable文件夹下

2、在activity中初始化控件

a) 在bottomListener中设置每个Item选项的点击事件

b) 在viewPagerListener中添加滑动监听事件

在该类中默认存在三个方法,onPageScroll(滑动监听),onPageSelected(对应选中项操作),onPageScrollStateChanged(手指屏幕监听)。主要用到第二个方法设置点击时切换到对应页面:

c) setupViewPager是我自定义的方法,用于添加对应的fragment

正常来说不同页面对应不同Fragment,这里我简单化就用一个Fragment 来实现多个页面,实际使用还是要实例化多个fragment的就如我注释掉的那行一样。如果有多个fragment还可以通过List保存不同fragment,最后输入到适配器中,这个就是自定义适配器的事了。

d) 自定义viewAdapter,因为用的fragment这里我的adapter继承于FragmentPagerAdapter

private一个列表list变量保存的fragment列表

继承之后Alt+Enter继承重新方法

修改getItem和getCount的返回值为list的选项或者list长度

定义一个构造函数接收传入的List<Fragment>

我添加了一个方法用于实现上面的add Fragment

..............................................................至此最基本的选项卡式菜单栏就实现了..............................................................

进阶一:

ViewPage是否禁止左右滑动

自定义一个viewPager控件

添加一个变量isSrcoll来控制是否可滑动

在方法onInterceptTouchEvent和onTouchEvent中,当isScroll==false(禁止滑动)时返回false

添加一个方法setIsScroll方便外部调用设置

进阶二:

ViewPage滑动动画设置和自定义

viewPager有两个setCurrentItem方法,可通过setCurrentItem(i,false)禁止动画

自定义动画通过setPageTransformer(true,new XXX())设置

定义一个XXX类implements 一个ViewPager.PageTransformer接口,在transformPage方法中对每个页面进行设置

因为也是照着别人的文章学的,直接参考https://www.jianshu.com/p/c9e8448472ed

进阶三:

选项卡颜色问题:

默认情况下bottomNavigation采用的是选中色为@Color/colorPrimary,未选择色为灰色。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值