自从Material design出来之后,备受安卓开发人员的喜爱,因为其风格更加的符合人们的审美观,也就是我们所说的面向对象,大众喜欢的风格才是最好的风格,下面我就介绍一下Material design中tablayout的用法。这是非常方便的比起以前的相互切换更加简洁方便下面看如何实现
首先我们用到Material design这个风格,所以得需要Material design这个支持库
compile 'com.android.support:design:23.2.1'
所以需要这个依赖,下一步写布局了在activity_main里面加入tablayout布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.tablayout.MainActivity" android:orientation="vertical" > <android.support.design.widget.TabLayout android:id="@+id/tab_FindFragment_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/titleBlue" app:tabIndicatorColor="@color/white" app:tabSelectedTextColor="@color/gray" app:tabTextColor="@color/white" app:tabTextAppearance="@style/tabLayoutTextSize" /> <android.support.v4.view.ViewPager android:id="@+id/vp_FindFragment_pager" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" />之后,我们需要向里面添加fragment,所以这里我用list包裹fragment,如下是fragmentadapter
public class FragmentAdapter extends FragmentPagerAdapter{ private List<Fragment> list_fragment; //fragment列表 private List<String> list_Title; //tab名的列表 public FragmentAdapter(FragmentManager fm) { super(fm); } public FragmentAdapter(FragmentManager fragmentManager, List<Fragment> list_fragment, List<String> list_title) { super(fragmentManager); this.list_fragment = list_fragment; this.list_Title =list_title; } @Override public Fragment getItem(int position) { return list_fragment.get(position); } @Override public int getCount() { return list_fragment.size(); } //此方法用来显示tab上的名字 @Override public CharSequence getPageTitle(int position) { return list_Title.get(position % list_Title.size()); }
之后对MainActivity进行添加fragment了,这里有必要说明一下这个时候必须得继承FragmentActivity,所以可以得到如下
public class MainActivity extends FragmentActivity { private TabLayout tab_FindFragment_title; private ViewPager vp_FindFragment_pager; private FragmentPagerAdapter fAdapter; private List<Fragment> list_fragment; private List<String> list_title; private Fragment3 fragment3; private Fragment1 fragment1; private Fragment2 fragment2; private Fragment4 fragment4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.content_main); initControls(); } private void initControls() { tab_FindFragment_title = (TabLayout) findViewById(R.id.tab_FindFragment_title); vp_FindFragment_pager = (ViewPager) findViewById(R.id.vp_FindFragment_pager); fragment3 = new Fragment3(); fragment1 = new Fragment1(); fragment2 = new Fragment2(); fragment4 = new Fragment4(); list_fragment = new ArrayList<>(); list_fragment.add(fragment3); list_fragment.add(fragment1); list_fragment.add(fragment2); list_fragment.add(fragment4); list_title = new ArrayList<>(); list_title.add("fragment1"); list_title.add("fragment2"); list_title.add("fragment3"); list_title.add("fragment4"); tab_FindFragment_title.setTabMode(TabLayout.MODE_FIXED); //为TabLayout添加tab名称 tab_FindFragment_title.addTab(tab_FindFragment_title.newTab().setText(list_title.get(0))); tab_FindFragment_title.addTab(tab_FindFragment_title.newTab().setText(list_title.get(1))); tab_FindFragment_title.addTab(tab_FindFragment_title.newTab().setText(list_title.get(2))); tab_FindFragment_title.addTab(tab_FindFragment_title.newTab().setText(list_title.get(3))); fAdapter = new FragmentAdapter(getSupportFragmentManager(), list_fragment, list_title); vp_FindFragment_pager.setAdapter(fAdapter); tab_FindFragment_title.setupWithViewPager(vp_FindFragment_pager); }
这个时候就实现它的效果了,还是很好用的就这几部