TableLayout与TabeLayout+ViewPager的使用 1、TableLayout的简介: TableLayout是Design包下的一个控件,支持水平布局,可以和viewpager配合使用, 也可以单独使用。 2、使用步骤: 1)、引入design包: compile 'com.android.support:design:26.0.0-alpha1' 2)、在布局文件中加入TableLayout布局: <android.support.design.widget.TabLayout android:id="@+id/tb" android:layout_height="wrap_content"> </android.support.design.widget.TabLayout> 3)、使用: private android.support.design.widget.TabLayout mTableLayout; mTableLayout= (TabLayout) getViewById(R.id.tb); 设置标题: mTableLayout.newTab().setText(mTitles[i]).setText("相册")) mTableLayout.newTab().setText(mTitles[i]).setText("标题")) mTableLayout.newTab().setText(mTitles[i]).setText("我的")) 设置监听: mTableLayout.addOnTabSelectedListener(new TabLayout. OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { //当被选中时被调用,tab是被选中的位置 } @Override public void onTabUnselected(TabLayout.Tab tab) { //当没被选中的时候调用,即当前是选中的,选择了 另一个item时, 当另一个view别选中时被调用 } @Override public void onTabReselected(TabLayout.Tab tab) { //当当前item是选中状态,此时再次选择该item时别调用 } }); }3、TableLayout与ViewPager配合使用: 布局文件: <?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" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.pdftron.webviewer.activity.TabLayoutActivity"> <android.support.design.widget.TabLayout android:id="@+id/tb" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" app:tabBackground="@android:color/holo_green_dark" app:tabContentStart="5dp" app:tabGravity="fill" app:tabIndicatorColor="@android:color/holo_purple" app:tabIndicatorHeight="6dp" app:tabMode="scrollable" app:tabSelectedTextColor="#ff00796b" app:tabTextAppearance="@style/TextAppearance.AppCompat.Medium" app:tabTextColor="#FFFFFF"> </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/tb"></android.support.v4.view.ViewPager> </RelativeLayout> 使用到的adapter: public class BaseFragemetAdapter extends FragmentStatePagerAdapter { ArrayList<Fragment> fgs; private String[] mTitles; public void setFgs(ArrayList<Fragment> fgs, String[] mTitles){ this.fgs=fgs; this.mTitles=mTitles; } public BaseFragemetAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fgs.get(position); } @Override public int getCount() { return fgs.size(); } @Override public CharSequence getPageTitle(int position) { return mTitles[position];//很重要,起到与tableLayout关联的作用, 否则会报错 } } 用到的Activity: public class TabLayoutActivity extends FragmentActivity { private android.support.design.widget.TabLayout mTableLayout; private String[] mTitles={"相册","标题","我的","菜单","牧场","农场", "设置"}; private ArrayList<Fragment> fgs=new ArrayList<Fragment>(); private ViewPager vp; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews(); intiDatas(); initEvents(); } private void initEvents() { mTableLayout.addOnTabSelectedListener(new TabLayout. OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { Toast.makeText(TabLayoutActivity.this, tab.getText()+"", Toast.LENGTH_SHORT).show(); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } }); } private void initMenus(){ fgs.clear(); for (int i=0;i<mTitles.length;i++){ if ((i%2)==0){ fgs.add(new MyFragments()); }else { fgs.add(new MyFragments2()); } } }; private void intiDatas() { initMenus(); BaseFragemetAdapter adapter=new BaseFragemetAdapter( getSupportFragmentManager()); adapter.setFgs(fgs,mTitles); vp.setAdapter(adapter); mTableLayout.setupWithViewPager(vp); } private void initViews() { mTableLayout= (TabLayout) getViewById(R.id.tb); vp= (ViewPager) getViewById(R.id.vp); } private View getViewById(int id){ return this.findViewById(id); }; }
TableLayout与TabeLayout+ViewPager的使用
最新推荐文章于 2024-07-26 21:24:56 发布