viewpager和tablayout聯(lián)合起來使用可以實現(xiàn)頂部或者底部導(dǎo)航欄的實現(xiàn)
packagecom.itheima.jdmall.MyFragment;
importandroid.os.Bundle;
importandroid.support.annotation.Nullable;
importandroid.support.design.widget.TabLayout;
importandroid.support.v4.app.Fragment;
importandroid.support.v4.view.ViewPager;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
importcom.itheima.jdmall.R;
importcom.itheima.jdmall.adapter.RegisterAdapter;
importcom.itheima.jdmall.fregment.BaseFragment;
importjava.util.ArrayList;
importjava.util.List;
/**
* Created by albus on 2017/2/12.
*/
public classFirstFragmentextendsBaseFragment {
privateTabLayouttab_FindFragment_title;//定義TabLayout
privateViewPagervp_FindFragment_pager;//定義viewPager
privateRegisterAdapterfAdapter;//定義adapte
privateListlist_fragment;//定義要裝fragment的列表
privateListlist_title;//裝tab文字的容器
privateLoginFragmentmLoginFragment;
privateRegisterFragmentmRegisterFragment;
@Nullable
@Override
publicView onCreateView(LayoutInflater inflater,@NullableViewGroup container,@NullableBundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_first,container,false);
initControls(view);
returnview;
}
@Override
public intgetLayoutResId() {
return0;
}
private voidinitControls(View view) {
//尋找tablayout和Viewpager的id
tab_FindFragment_title= (TabLayout) view.findViewById(R.id.tab_FindFragment_title);
vp_FindFragment_pager= (ViewPager)view.findViewById(R.id.vp_FindFragment_pager);
//初始化fragment
mLoginFragment=newLoginFragment();
mRegisterFragment=newRegisterFragment();
//將fragment添加 到集合中
list_fragment=newArrayList<>();
list_fragment.add(mLoginFragment);
list_fragment.add(mRegisterFragment);
//將標簽的文字添加到集合中
list_title=newArrayList<>();
list_title.add("登錄");
list_title.add("注冊");
tab_FindFragment_title.setTabMode(TabLayout.MODE_FIXED);
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)));
fAdapter=newRegisterAdapter(getChildFragmentManager(),list_fragment,list_title);
vp_FindFragment_pager.setAdapter(fAdapter);
tab_FindFragment_title.setupWithViewPager(vp_FindFragment_pager);
}
}
這上面就是整個fragment的寫法 ? ? 可以根據(jù)自己的需求做更改
上面為fragment的布局文件
packagecom.itheima.jdmall.adapter;
importandroid.support.v4.app.Fragment;
importandroid.support.v4.app.FragmentManager;
importandroid.support.v4.app.FragmentPagerAdapter;
importjava.util.List;
/**
* Created by albus on 2017/2/7.
*/
public classRegisterAdapterextendsFragmentPagerAdapter{
privateListLlist_fragment;//fragment列表
privateListlist_Title;
通過構(gòu)造方法傳過來fragment中的數(shù)據(jù) 對adapter進行設(shè)置
publicRegisterAdapter(FragmentManager fm, List list_fragment,List list_title) {
this(fm);
this.Llist_fragment= list_fragment;
this.list_Title=list_title;
}
publicRegisterAdapter(FragmentManager fm){
super(fm);
}
@Override
publicFragment getItem(intposition) {
//這里和List view是一樣的
returnLlist_fragment.get(position);
}
@Override
public intgetCount() {
返回的是tab數(shù)據(jù)的多少或者說,你需要幾個頁面這里就返回幾個數(shù)據(jù)?
returnlist_Title.size();
}
//此方法用來顯示tab上的名字
@Override
publicCharSequence getPageTitle(intposition) {
returnlist_Title.get(position %list_Title.size());
}
}
上面為adapter的寫法
這其中可能會出現(xiàn)一些小問題 ?,比如說當你使用androidstudio時替裆,他會有一個butterknife可以帶替findviewbyid ?但在這里使用時可能會出現(xiàn)空指針異常 ?沒關(guān)系 ? 你將這個butterknife綁定的id去掉改成findviewbyid應(yīng)該就不會出現(xiàn)這個問題了 ?我使用時暫時就發(fā)現(xiàn)了這一個問題
? ? 有不懂的歡迎加QQ740894123 ?一起交流學習 ?本人正在向乞討在路上奔走中