TableLayout与TabeLayout+ViewPager的使用

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); }; }
  
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值