自定义view
设置每个页面的子item
layout_tab_item.xml,每个item由一个ImageView和一个TextView组成
1 | "1.0" encoding="utf-8" xml version= |
设置整个底部导航栏
layout_bottom.xml,底部导航栏由5个item组成
1 | "1.0" encoding="utf-8" xml version= |
创建自定义View并配置
这里用的是bufferKnife注解功能,不懂的请移步谷歌。主要需要注意的就是需要设置很多id的BackgroundResource和TextColor,这里我把需要重复设置的地方进行了重构,知道这点就很容易看懂了。下面多了一处回调接口,主要用于实现点击item时viewpager滑动,即fragment滑动
1 | /** |
实现ViewPager和Fragment的滑动
创建fragment布局和fragment类
此处以home_fragment.xml和HomeFragment为例
1 | home_fragment.xml |
创建activity_main.xml
记得ViewPager和刚刚自定义的MyBottomLayout都要导入类全名
1 | "1.0" encoding="utf-8" xml version= |
创建BaseActivity
这一步可以省略,不过为了代码的可复用性建议加上,方便功能的添加
1 | /** |
配置MainActivity
需要注意的是使用了butterknife,其他初始化数据方法都需要在其之后执行。
实现了前面的回调监听接口,通过ViewPager方法改变当前的item值,实现自定义view时点击导航item改变页面的功能。
ViewPager使用addOnPageChangeListener进行页面的滑动监听,实现功能滑动时导航item跟着变化。
1 | public class MainActivity extends BaseActivity { |
Demo下载地址 使用ViewPager和Fragment实现底部导航滑动重构版