ActionBar7 ActionBar ViewPager Fragment 实现可左右滑动的Tab页布局.docx
- 文档编号:15535290
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:5
- 大小:16.72KB
ActionBar7 ActionBar ViewPager Fragment 实现可左右滑动的Tab页布局.docx
《ActionBar7 ActionBar ViewPager Fragment 实现可左右滑动的Tab页布局.docx》由会员分享,可在线阅读,更多相关《ActionBar7 ActionBar ViewPager Fragment 实现可左右滑动的Tab页布局.docx(5页珍藏版)》请在冰点文库上搜索。
ActionBar7ActionBarViewPagerFragment实现可左右滑动的Tab页布局
ActionBar(7)ActionBar+ViewPager+Fragment实现可左右滑动的Tab页布局
ActionBar除了可以本身定制VIEW外,还可以利用ActionBar+ViewPager+Fragment实现一些好用的效果。
如本次要说的可左右滑动的Tab页布局。
可左右滑动的Tab页布局的好处在于,用单手左右滑动操作即可,而无须去点击切换Tab页。
要实现可于
ActionBar设为NAVIGATION_MODE_TABS模式,实现Tab.
ViewPager用于装载Fragment页面组或View组,使其能左右滑动.
Fragment用自己的布局,自己的生命周期。
具体可查.
ActionBar和ViewPager的相互配合主要通过ActionBar的TabListener监听和ViewPager的PageChangeListener监听来交互。
效果如下:
实现步骤如下:
1.在XML布局文件中指定ViewPager。
[html]viewplaincopy<?
xmlversion="1.0"encoding="utf-8"?
><LinearLayoutxmlns:
android="android:
layout_width="match_parent"android:
layout_height="match_parent"android:
orientation="vertical"><android.support.v4.view.ViewPagerandroid:
id="@+id/vPager"android:
layout_width="wrap_content"android:
layout_height="wrap_content"android:
layout_gravity="center"android:
layout_weight="1.0"android:
background="#000000"android:
flipInterval="30"android:
persistentDrawingCache="animation"/></LinearLayout>
2.直接上代码
工程中ActionBarActivity引用自android-support-v7-appcompat扩展包。
具体引用方法可参考点击打开链接
[java]viewplaincopypublicclassTabBar4ActivityextendsActionBarActivity{privateActionBaractionBar;privateSpinnermActionbarSpinner;privateViewPagermPager;privateArrayList<View>mViews=null;privateArrayList<Fragment>mFragmentsList;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_tabbar);//得到BaractionBar=getSupportActionBar();//设置标题actionBar.setTitle("ActionBar+ViewPager+Fragment");actionBar.setSubtitle("努力!
");//实现用户点击ActionBar图标后返回前一个activityactionBar.setDisplayHomeAsUpEnabled(true);//定义ActionBar模式为NAVIGATION_MODE_TABSactionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);actionBar.addTab(actionBar.newTab().setText("t1").setIcon(R.drawable.ic_launcher).setTabListener(MyBarTabListener));actionBar.addTab(actionBar.newTab().setText("t2").setIcon(R.drawable.ic_launcher).setTabListener(MyBarTabListener));mPager=(ViewPager)findViewById(R.id.vPager);mFragmentsList=newArrayList<Fragment>();Fragmentpage1fragment=TabPageFragment.newInstance("ActionBar+ViewPager+Fragmentpage1");Fragmentpage2fragment=TabPageFragment.newInstance("ActionBar+ViewPager+Fragmentpage2");mFragmentsList.add(page1fragment);mFragmentsList.add(page2fragment);mPager.setAdapter(newMyFragmentPagerAdapter(getSupportFragmentManager(),mFragmentsList));//---------------------------------------------------------------------------mPager.setOnPageChangeListener(newMyPageScrollEvent());mPager.setCurrentItem(0);}@SuppressLint("NewApi")@OverridepublicbooleanonCreateOptionsMenu(Menumenu){//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.//添加菜单项MenuItemfindItem=menu.add(0,1,0,"查找");MenuItemexitItem=menu.add(0,0,0,"退出");//绑定到ActionBarfindItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);exitItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);returntrue;}/***ActionBar上的Tab页更改*PublicMethodsonTabReselected(ActionBar.Tabtab,FragmentTransactionft)Calledwhenatabthatisalreadyselectedischosenagainbytheuser.onTabSelected(ActionBar.Tabtab,FragmentTransactionft)Calledwhenatabenterstheselectedstate.onTabUnselected(ActionBar.Tabtab,FragmentTransactionft)Calledwhenatabexitstheselectedstate.*/privatefinalTabListenerMyBarTabListener=newTabListener(){privatefinalstaticStringTAG="MyBarTabListener";@OverridepublicvoidonTabReselected(Tabarg0,FragmentTransactionarg1){//TODOAuto-generatedmethodstubLog.d(TAG,"onTabReselected");}@OverridepublicvoidonTabSelected(Tabarg0,FragmentTransactionarg1){//TODOAuto-generatedmethodstubLog.d(TAG,"onTabSelected");//当更改ActionBar上的Tab页有更改时,ViewPager显示相关的页面if(mPager!
=null)mPager.setCurrentItem(arg0.getPosition());}@OverridepublicvoidonTabUnselected(Tabarg0,FragmentTransactionarg1){//TODOAuto-generatedmethodstubLog.d(TAG,"onTabUnselected");}};/***用于ViewPager滑动时触发.**onPageScrollStateChanged(intstate)Calledwhenthescrollstatechanges.onPageScrolled(intposition,floatpositionOffset,intpositionOffsetPixels)Thismethodwillbeinvokedwhenthecurrentpageisscrolled,eitheraspartofaprogrammaticallyinitiatedsmoothscrollorauserinitiatedtouchscroll.onPageSelected(intposition)Thismethodwillbeinvokedwhenanewpagebecomesselected.*/classMyPageScrollEventimplementsOnPageChangeListener{privatefinalstaticStringTAG="MyPageScrollEvent";@OverridepublicvoidonPageScrollStateChanged(intarg0){//TODOAuto-generatedmethodstubLog.d(TAG,"onPageScrollStateChanged");}@OverridepublicvoidonPageScrolled(intarg0,floatarg1,intarg2){//TODOAuto-generatedmethodstubLog.d(TAG,"onPageScrolled");}@OverridepublicvoidonPageSelected(intarg0){//TODOAuto-generatedmethodstubLog.d(TAG,"onPageSelected");//当滑动ViewPager换页时,将ActionBar上的Tab显示到对应页actionBar.selectTab(actionBar.getTabAt(arg0));}}/***FragmentPagerAdapter继承自PagerAdapter,是其中的一种实现。
*它将每一个页面表示为一个Fragment,并且每一个Fragment都将会保存到fragmentmanager当中。
*而且,当用户没可能再次回到页面的时候,fragmentmanager才会将这个Fragment销毁。
.*@authorXCL**/publicclassMyFragmentPagerAdapterextendsFragmentPagerAdapter{privateArrayList<Fragment>fragmentsList;publicMyFragmentPagerAdapter(FragmentManagerfm){super(fm);}publicMyFragmentPagerAdapter(FragmentManagerfm,ArrayList<Fragment>fragments){super(fm);this.fragmentsList=fragments;}@OverridepublicFragmentgetItem(intarg0){//TODOAuto-generatedmethodstubreturnfragmentsList.get(arg0);}@OverridepublicintgetCount(){//TODOAuto-generatedmethodstubreturnfragmentsList.size();}}/***菜单事件响应*/publicbooleanonOptionsItemSelected(MenuItemitem){//TODOAuto-generatedmethodstubswitch(item.getItemId()){case0:
//displayToast("退出菜单");break;case1:
//displayToast("查找菜单");break;caseandroid.R.id.home:
Intentintent=newIntent(this,MainActivity.class);intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);Toast.makeText(getApplicationContext(),"android.R.id.home",0).show();break;default:
//action_composebreak;}returnsuper.onOptionsItemSelected(item);}}TabPageFragment.java
[java]viewplaincopypublicclassTabPageFragmentextendsFragment{privatestaticfinalStringTAG="TabPageFragment";privateStringpagInfo;staticTabPageFragmentnewInstance(Strings){TabPageFragmentnewFragment=newTabPageFragment();Bundlebundle=newBundle();bundle.putString("fgArg",s);newFragment.setArguments(bundle);returnnewFragment;}@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);Log.d(TAG,"TabPageFragment-----onCreate");Bundleargs=getArguments();pagInfo=args!
=null?
args.getString("fgArg"):
"page";}@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){Log.d(TAG,"TabPageFragment-----onCreateView");Viewview=inflater.inflate(R.layout.fragment_demo,container,false);TextViewviewTvPage=(TextView)view.findViewById(R.id.tv_page);viewTvPage.setText(pagInfo);returnview;}@OverridepublicvoidonDestroy(){super.onDestroy();Log.d(TAG,"TabPageFragment-----onDestroy");}}fragment_demo.xml
[html]viewplaincopy<?
xmlversion="1.0"encoding="utf-8"?
><LinearLayoutxmlns:
android="android:
layout_width="match_parent"android:
layout_height="match_parent"android:
orientation="vertical"android:
background="#708090"><TextViewandroid:
id="@+id/tv_page"android:
layout_width="wrap_content"android:
layout_height="wrap_content"android:
text="TextView"/></LinearLayout>MAIL:
xcl_168@
我的CSDNBLOG:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ActionBar7 ActionBar ViewPager Fragment 实现可左右滑动的Tab页布局 实现 左右 滑动 Tab 布局
链接地址:https://www.bingdoc.com/p-15535290.html