近期有需要,要做一个类似于网易新闻首页中的可滑动标题栏 TabLayout,根据大神写的 FlycoTabLayout 改造了一下,可以加载网络图片,主要实现内容如下:
1. 可配置标题选中效果(下划线/上三角/圆角矩形或椭圆);
2. 可配置 TabLayout 中显示文字或网络图片,可配置文字或图片选中绘制颜色;
3. 借助 Glide 展示加载网络或本地图标;
4. Fragment 懒加载
1. 类似于网易新闻的第一项首页,主要布局基本上是一个可滑动的顶部 TabLayout 和一个装载多个 Fragment 的 ViewPager。这样先解决 ViewPager 加载 Fragment 的问题,一般为了程序的运行效率,会用到 Fragmentd 的懒加载,网上有太多大神的例子了,并且小菜研究不深入,主要有一个坑告知大家,在 Fragment 的 Adapter 中的方法需要注释掉,可避免默认加载3个或多个 Fragment。
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// container.removeView((View) object);
}
2. 在 FlycoTabLayout 中选择一个比较符合需求的样式,里面主要是对文字的展示,小菜的需求是可以加载网络图标。只是在里面添加了几个小方法支持一下,自己写了一个 setViewPager(mViewPager, 1, mTitleIconList);第一个参数代表 ViewPager;第二个参数0代表展示文字的,1代表展示图标的;第三个参数代表需要展示的图标的列表。
3. Glide加载网络或本地图标,封装了一个 BitmapUtil.tintBitmap 的小方法对Bitmap进行绘制颜色,若图标列表中某几项为空时可默认加载固定的一个图标。
4. 对于文字或图标的选中颜色;选中状态均放在一个 config.xml 文件中,方便开发人员或其他人员修改。
标题栏为文字的TabLayout
标题栏为图标的TabLayout
GitHub 源码本人是一个 Android 小菜,很多知识点理解都不到位,代码写的也仅限于可运行阶段,有好的提议希望大家多多指点校正。