天天看點

android的design庫-----TabLayout的簡單使用

其實這裡也是介紹android5.0的design庫的一些控件的使用

好了下面不多說了,這個就是個頂部的滑動tab

首先

添加依賴

下面簡單介紹下

<android.support.design.widget.TabLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tab_taskfragment_title"
        app:tabIndicatorColor="@color/colorDiGreen"
        app:tabSelectedTextColor="@color/colorDiGreen"
        app:tabTextColor="@color/normal_text_color"
        >
    </android.support.design.widget.TabLayout>
    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/viewpage_taskfragment"></android.support.v4.view.ViewPager>```

稍作解釋
           
app:tabIndicatorColor="@color/white"                 // 下方滾動的下劃線顔色
    app:tabSelectedTextColor="@color/gray"               // tab被選中後,文字的顔色
    app:tabTextColor="@color/white"                      // tab預設的文字顔色
           

我們需要兩個集合

//建立一個标題集合
    List<String> title_list=new ArrayList<String>();
    //fragment集合
    List<BaseFragment>fragment_list=new ArrayList<BaseFragment>();
           

然後我們需要一個擴充卡來将二者結合起來需要繼承FragmentPagerAdapter

package com.yundong.gongchengji.adapter;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import com.yundong.gongchengji.base.BaseFragment;

import java.util.List;

/**
 *
 * 該類用于 tablayout
 * Created by Administrator on 2016/10/20.
 */
public class MyPagerAdapter extends FragmentPagerAdapter {
    private  List<String> mTitleList;
    private List<BaseFragment> views;
    //通過構造方法傳值
    public MyPagerAdapter(FragmentManager fm, List<String> mTitleList, List<BaseFragment> views) {
        super(fm);
        this.mTitleList=mTitleList;
        this.views=views;
    }

    @Override
    public Fragment getItem(int position) {
        return views.get(position);//擷取目前的fragment
    }

    @Override
    public int getCount() {
        return views.size();
    }
    @Override
    public CharSequence getPageTitle(int position) {
        return mTitleList.get(position); //擷取tab标題
    }
}
           

ok就這樣了

下面給出全部的代碼

public class TaskHallActivity extends BaseActivity {
    private TabLayout tabTaskfragmentTitle;
    private ViewPager viewpageTaskfragment;
    //建立一個标題集合
    List<String> title_list=new ArrayList<String>();
    //fragment集合
    List<BaseFragment>fragment_list=new ArrayList<BaseFragment>();
    @Override
    public int getContentViewId() {
        return R.layout.activity_task_hall;
    }

    @Override
    protected void initView(Bundle savedInstanceState) {
        setLeft();
        setTitle("任務大廳");
        tabTaskfragmentTitle= (TabLayout) findViewById(R.id.tab_taskfragment_title);
        viewpageTaskfragment= (ViewPager) findViewById(R.id.viewpage_taskfragment);
    }
/**
     * 初始化變量
     */
    @Override
    protected void initVariable() {
        title_list.add("任務詳情");
        title_list.add("任務互動");
        fragment_list.add(new TaskDetailFragment());
        fragment_list.add(new TaskDetailFragment());
    }
 /**
     * 處理業務邏輯,狀态恢複等操作
     */
    @Override
    protected void processLogic(Bundle savedInstanceState) {
        tabTaskfragmentTitle.setTabMode(TabLayout.MODE_FIXED);

        tabTaskfragmentTitle.addTab(tabTaskfragmentTitle.newTab().setText(title_list.get()));
        tabTaskfragmentTitle.addTab(tabTaskfragmentTitle.newTab().setText(title_list.get()));
        viewpageTaskfragment.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                return fragment_list.get(position);
            }

            @Override
            public int getCount() {
                return fragment_list.size();
            }
        });
        MyPagerAdapter adapter=new MyPagerAdapter(getSupportFragmentManager(),title_list,fragment_list);
        viewpageTaskfragment.setAdapter(adapter);
        tabTaskfragmentTitle.setupWithViewPager(viewpageTaskfragment);

    }
}