Android之Actionbar顶部标签的使用
今天写了个示例代码,就是使用Actionbar类实现顶部标签切换功能。如果所示。
使用最新的adt工具,创建项目的时候都会带一个android-support-v7-appcompat的类库项目,
这个libproject中有我们要用的ActionBar,可以适配2.1的Android系统。
废话不多说,直接上代码。
1、修改activity_main.xml,增加ViewPager。
<android.support.v4.view.ViewPagerxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/pager"android:layout_width="match_parent"android:layout_height="match_parent"/>
2、修改MainActivity中的代码,让其继承ActionBarActivity
publicclassMainActivityextendsActionBarActivityimplementsTabListener{
3、创建TabsPagerAdapter继承FragmentPagerAdapter
packagecom.example.tabswithswie.adatper;importandroid.support.v4.app.Fragment;importandroid.support.v4.app.FragmentManager;importandroid.support.v4.app.FragmentPagerAdapter;importcom.example.tabswithswie.fragments.AppFragment;importcom.example.tabswithswie.fragments.GamesFragment;importcom.example.tabswithswie.fragments.MoviesFragment;publicclassTabsPagerAdapterextendsFragmentPagerAdapter{publicTabsPagerAdapter(FragmentManagerfm){super(fm);//TODOAuto-generatedconstructorstub}@OverridepublicFragmentgetItem(intindex){switch(index){case0:returnnewAppFragment();case1:returnnewGamesFragment();case2:returnnewMoviesFragment();}returnnull;}@OverridepublicintgetCount(){//TODOAuto-generatedmethodstubreturn3;}}
4、创建AppFragment继承android.support.v4.app.Fragment
packagecom.example.tabswithswie.fragments;importcom.example.tabswithswie.R;importandroid.os.Bundle;importandroid.support.v4.app.Fragment;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;publicclassAppFragmentextendsFragment{@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){//TODOAuto-generatedmethodstubreturninflater.inflate(R.layout.fragment_app,container,false);}}
5、创建布局文件fragment_app.xml
<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#43ff00ff"><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="这个是应用界面"android:textAppearance="?android:attr/textAppearanceLarge"/></RelativeLayout>
6、创建GamesFragment继承android.support.v4.app.Fragment
packagecom.example.tabswithswie.fragments;importcom.example.tabswithswie.R;importandroid.os.Bundle;importandroid.support.v4.app.Fragment;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;publicclassGamesFragmentextendsFragment{@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){//TODOAuto-generatedmethodstubreturninflater.inflate(R.layout.fragment_game,container,false);}}
7、创建布局文件fragment_game.xml
<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#9445f353"><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="游戏"android:textAppearance="?android:attr/textAppearanceLarge"/></RelativeLayout>
8、创建MoviesFragment继承android.support.v4.app.Fragment
packagecom.example.tabswithswie.fragments;importcom.example.tabswithswie.R;importandroid.os.Bundle;importandroid.support.v4.app.Fragment;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;publicclassMoviesFragmentextendsFragment{@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){//TODOAuto-generatedmethodstubreturninflater.inflate(R.layout.fragment_movie,container,false);}}
9、创建布局文件fragment_movie.xml
<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#34fef443"><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="视频"android:textAppearance="?android:attr/textAppearanceLarge"/></RelativeLayout>
10、回到 MainActivity类,添加Tabs到ActionBar中,并处理点击滑动事件。完整代码
packagecom.example.tabswithswie;importandroid.os.Bundle;importandroid.support.v4.app.FragmentTransaction;importandroid.support.v4.view.ViewPager;importandroid.support.v4.view.ViewPager.OnPageChangeListener;importandroid.support.v7.app.ActionBar;importandroid.support.v7.app.ActionBar.Tab;importandroid.support.v7.app.ActionBar.TabListener;importandroid.support.v7.app.ActionBarActivity;importcom.example.tabswithswie.adatper.TabsPagerAdapter;publicclassMainActivityextendsActionBarActivityimplementsTabListener{privateViewPagerviewPager;privateActionBaractionBar;privateTabsPagerAdaptermTabsPagerAdapter;privateString[]tabs={"应用","游戏","视频"};@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取viewpagerviewPager=(ViewPager)findViewById(R.id.pager);//实例化pageradaptermTabsPagerAdapter=newTabsPagerAdapter(getSupportFragmentManager());viewPager.setAdapter(mTabsPagerAdapter);//获取适配的actionbaractionBar=getSupportActionBar();//设置home按钮不可点击actionBar.setHomeButtonEnabled(false);//设置顶部导航的模式-tabsactionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//添加标签for(Stringtab:tabs){actionBar.addTab(actionBar.newTab().setText(tab).setTabListener(this));}//设置ViewPager切换时候的监听事件viewPager.setOnPageChangeListener(newOnPageChangeListener(){@OverridepublicvoidonPageSelected(intposition){//页面滑动,顶部标签跟着改变actionBar.setSelectedNavigationItem(position);}@OverridepublicvoidonPageScrolled(intarg0,floatarg1,intarg2){//TODOAuto-generatedmethodstub}@OverridepublicvoidonPageScrollStateChanged(intarg0){//TODOAuto-generatedmethodstub}});}@OverridepublicvoidonTabReselected(Tabarg0,FragmentTransactionarg1){//TODOAuto-generatedmethodstub}@OverridepublicvoidonTabSelected(Tabtab,FragmentTransactionfragmentTransaction){//tab选中,切换viewpagerviewPager.setCurrentItem(tab.getPosition());}@OverridepublicvoidonTabUnselected(Tabarg0,FragmentTransactionarg1){//TODOAuto-generatedmethodstub}}
代码就是这样的,搞定收工了。示例代码下载
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。