在商业Android项目中,底部Tab界面效果使用的频率非常频繁,我就趁此,说说我开发底部Tab界面效果的思路。
我是使用GridView和Fragment实现Tab效果的
GridView一般用于表格视图的显示,Tab可以看成是只有一行的表格,GridView的高度设置为一行Tab的高度即可。列数设置为Tab的个数。
在此,将Tab抽象为一个TabMenu的抽象类,成员变量有:选中状态,选中图标,选中文本颜色,未选中图标,未选中文本颜色,当然还有文本,Tab对应的Fragment
// 名称
private String name;
// 图标
private int icon;
// 选中图标
private int iconSelected;
// 名称颜色
private int textColor;
// 选中名称颜色
private int textColorSelected;
// 背景
private int background;
// 选中背景
private int backgroundSelected;
// tab标签对应的tab界面
private TabViewFragment tabViewFragment;
// 选中状态
private boolean selected;
在GridView适配器中,根据Tab的选中状态设置显示图标和文本颜色即可
//TabMenu为选中状态时,设置选中状态的图标,和文本颜色
if (menu.isSelected()) {
imageView.setImageResource(menu.getIconSelected());
textView.setTextColor(menu.getTextColorSelected());
} else {
imageView.setImageResource(menu.getIcon());
textView.setTextColor(menu.getTextColor());
}
在GridView的单击选项事件中控制Tab及Tab对应Fragment的显示
//获取对应位置的TabMenu
TabMenu tabMenu = tabMenus.get(position);
//如果为选中状态,则返回,不再执行下面的操作
if (tabMenu.isSelected()) {
return;
}
//如果点击TabMenu对应的Fragment不存在,则创建
...//此处省略
//将之前选中的TabMenu设置为不选中,并将对应的Fragment隐藏
if (selectedTabMenu != null) {
selectedTabMenu.setSelected(false);
selectedTabMenu.getTabViewFragment().goneView();
}
//将点击的TabMenu设置为选中状态,并将对应的Fragment显示出来
tabMenu.setSelected(true);
tabMenu.getTabViewFragment().visibleView();
//将点击的TabMenu赋值给已选中的TabMenu,即记录当前点击的TabMenu为已选中的TabMenu
selectedTabMenu = tabMenu;
//刷新适配器,数据改变时,应该刷新适配器,刷新显示的界面
tabMenuGridAdapter.notifyDataSetChanged();
源码下载:
如果需要下载源码,请下载文章编号最大的源码下载链接的源码