新年第一天上班,没有任务,看到一篇TabLayout的博客感觉不错,记下以便以后要用,下面要说的是TabLayout_ViewPager的实例,其实很简单,两行代码解决问题!
mViewPager.setAdapter(mAdapter);
mTabLayout.setupWithViewPager(mViewPager);
但是需要注意一下,setupWithViePager必须在ViewPager.setAdapter()之后调用!为什么呢?来源码找答案:
public void setupWithViewPager(ViewPager viewPager) {
PagerAdapter adapter = viewPager.getAdapter();
if(adapter == null) {
throw new IllegalArgumentException("ViewPager does not have a PagerAdapter set");
} else {
...
}
}
首先去获取该ViewPager上的Adapter,如果没有Adapter,则抛出一个异常!
效果图就是这样:实现起来也是非常简单的
首先导入库
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:design:23.2.0'
activity_main
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.design.widget.TabLayout
android:id="@+id/id_tab_layout"
android:background="#ffffff"
app:tabGravity="fill"
app:tabMode="fixed"
app:tabIndicatorColor="#0ddcff"
app:tabTextColor="#000000"
app:tabSelectedTextColor="#0ddcff"
android:layout_width="match_parent"
android:layout_height="wrap_content"
></android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/id_view_pager"
android:layout_below="@+id/id_tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v4.view.ViewPager>
</RelativeLayout>
MainActivity
public class MainActivity extends AppCompatActivity {
private TabLayout mTablayout;
private ViewPager mViewPager;
private String[] mTitles = new String[]{"1", "2", "3"};
private List<Fragment> mFragments;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
private void initViews() {
//初始化View
mTablayout = (TabLayout) findViewById(R.id.id_tab_layout);
mViewPager = (ViewPager) findViewById(R.id.id_view_pager);
//初始化List<Fragment>
mFragments = new ArrayList<>();
Fragment mFestivalFragment = new FestivalFragment();
Fragment mRecordFragment = new RecordFragment();
Fragment myFragment = new MyFragment();
mFragments.add(mFestivalFragment);
mFragments.add(mRecordFragment);
mFragments.add(myFragment);
//给ViewPage设置Adapter
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mTitles[position];
}
});
//将viewpager与TabLayout绑定
mTablayout.setupWithViewPager(mViewPager);
}
}
代码比较少,但是功能还是可以实现!