//使用TabLayout,需要引入design库
compile 'com.android.support:design:25.1.0'
background: 设置背景图,示例为#38B059
tabTextColor: tab 的字体颜色,示例为#7D&D&D
tabSelectedTextColor: tab 选中时候的字体颜色
tabMode: tab 的模式,有两种。fixed 为固定模式,scrollable 为可滚动模式
public class HomeUI extends BaseActivity implements View.OnClickListener {
private TabLayout mTabLayout;
private ViewPager mViewPager;
private FloatingActionButton mFabtnSettings;//悬浮按钮
/**
* title list
*/
private List mTitleLists;
/**
* fragment list
*/
private List mFragLists;
private TextView mQrCode;//二维码
@Override
protected void setContentView() {
setContentView(R.layout.ui_home);
//changeStatusBarColor(R.color.myColor_green);
//隐藏actionbar
getSupportActionBar().hide();
}
@Override
protected void initView() {
mTabLayout = (TabLayout) findViewById(R.id.home_tablayout);
mViewPager = (ViewPager) findViewById(R.id.home_viewpager);
mFabtnSettings = (FloatingActionButton) findViewById(R.id.home_fabtn_settings);
mQrCode = (TextView) findViewById(R.id.home_tv_qrcode);
}
@Override
protected void initData() {
//默认隐藏
mFabtnSettings.setVisibility(ViewPager.GONE);
//去掉阴影
getSupportActionBar().setElevation(0);
mTitleLists = new ArrayList<>();
mTitleLists.add("语音助手");
mTitleLists.add("微信精选");
mTitleLists.add("视频推荐");
mTitleLists.add("创意商品");
mTitleLists.add("个人中心");
mFragLists = new ArrayList<>();
mFragLists.add(new HelperFrag());
mFragLists.add(new WechatFrag());
mFragLists.add(new VideoFrag());
mFragLists.add(new GoodsFrag());
mFragLists.add(new UserFrag());
//viewpager预加载
mViewPager.setOffscreenPageLimit(mFragLists.size());
//监听ViewPager
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//在第一个ViewPager中隐藏,其他页面显示
mFabtnSettings.setVisibility((position == 0) ? ViewPager.GONE : ViewPager.VISIBLE);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
//设置适配器
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
//返回当前位置的页面
return mFragLists.get(position);
}
@Override
public int getCount() {
//总的页面数
return mFragLists.size();
}
@Override
public CharSequence getPageTitle(int position) {
//每个item的title
return mTitleLists.get(position);
}
});
/**
* 绑定
*/
mTabLayout.setupWithViewPager(mViewPager);
//跳转到悬浮按钮设置界面
mFabtnSettings.setOnClickListener(this);
//跳转到扫码页面
mQrCode.setOnClickListener(this);
}
@Override
protected void showBackKey() {
//主页不显示返回的按钮
//super.showBackKey();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.home_fabtn_settings:
IntentUtils.startActivity(this, UserSettingUI.class);
showNext();
break;
default:
break;
}
}
}
public class FragmentInfo {
private String title;
private Class fragment;
public FragmentInfo(String title, Class fragment) {
this.title = title;
this.fragment = fragment;
}
//setter与getter方法省略
}
本文为了方便,分别用集合来存标题和Fragment实例,如下:
mTitleLists = new ArrayList<>();
mTitleLists.add("语音助手");
mTitleLists.add("微信精选");
mTitleLists.add("视频推荐");
mTitleLists.add("创意商品");
mTitleLists.add("个人中心");
mFragLists = new ArrayList<>();
mFragLists.add(new HelperFrag());
mFragLists.add(new WechatFrag());
mFragLists.add(new VideoFrag());
mFragLists.add(new GoodsFrag());
mFragLists.add(new UserFrag());
mViewPager.setOffscreenPageLimit(mFragLists.size());
//设置适配器
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
//返回当前位置的页面
return mFragLists.get(position);
}
@Override
public int getCount() {
//总的页面数
return mFragLists.size();
}
@Override
public CharSequence getPageTitle(int position) {
//每个item的title
return mTitleLists.get(position);
}
});
/**
* 绑定
*/
mTabLayout.setupWithViewPager(mViewPager);