今天写了个示例代码,就是使用Actionbar类实现顶部标签切换功能。如果所示。

 


使用最新的adt工具,创建项目的时候都会带一个android-support-v7-appcompat的类库项目,

这个libproject中有我们要用的ActionBar,可以适配2.1的Android系统。

废话不多说,直接上代码。


1、修改activity_main.xml,增加ViewPager。

   

2、修改MainActivity中的代码,让其继承ActionBarActivity

public class MainActivity extends ActionBarActivity implements TabListener {


3、创建TabsPagerAdapter继承FragmentPagerAdapter

package com.example.tabswithswie.adatper;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import com.example.tabswithswie.fragments.AppFragment;import com.example.tabswithswie.fragments.GamesFragment;import com.example.tabswithswie.fragments.MoviesFragment;public class TabsPagerAdapter extends FragmentPagerAdapter {    public TabsPagerAdapter(FragmentManager fm) {        super(fm);        // TODO Auto-generated constructor stub    }    @Override    public Fragment getItem(int index) {        switch (index) {        case 0:            return new AppFragment();        case 1:            return new GamesFragment();        case 2:            return new MoviesFragment();             }        return null;    }    @Override    public int getCount() {        // TODO Auto-generated method stub        return 3;    }}

4、创建AppFragment继承android.support.v4.app.Fragment

package com.example.tabswithswie.fragments;import com.example.tabswithswie.R;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class AppFragment extends Fragment {        @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        // TODO Auto-generated method stub        return inflater.inflate(R.layout.fragment_app, container, false);    }}

5、创建布局文件fragment_app.xml

<?xml version="1.0" encoding="utf-8"?>    


6、创建GamesFragment继承android.support.v4.app.Fragment

package com.example.tabswithswie.fragments;import com.example.tabswithswie.R;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class GamesFragment extends Fragment {        @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        // TODO Auto-generated method stub        return inflater.inflate(R.layout.fragment_game, container, false);    }}

7、创建布局文件fragment_game.xml

<?xml version="1.0" encoding="utf-8"?>    

8、创建MoviesFragment继承android.support.v4.app.Fragment

package com.example.tabswithswie.fragments;import com.example.tabswithswie.R;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class MoviesFragment extends Fragment {        @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        // TODO Auto-generated method stub        return inflater.inflate(R.layout.fragment_movie, container, false);    }}

9、创建布局文件fragment_movie.xml

<?xml version="1.0" encoding="utf-8"?>    


10、回到 MainActivity类,添加Tabs到ActionBar中,并处理点击滑动事件。完整代码

package com.example.tabswithswie;import android.os.Bundle;import android.support.v4.app.FragmentTransaction;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.support.v7.app.ActionBar;import android.support.v7.app.ActionBar.Tab;import android.support.v7.app.ActionBar.TabListener;import android.support.v7.app.ActionBarActivity;import com.example.tabswithswie.adatper.TabsPagerAdapter;public class MainActivity extends ActionBarActivity implements TabListener {    private ViewPager viewPager;    private ActionBar actionBar;     private TabsPagerAdapter mTabsPagerAdapter;        private String[] tabs ={"应用","游戏","视频"};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //获取viewpager        viewPager = (ViewPager) findViewById(R.id.pager);        //实例化pageradapter        mTabsPagerAdapter = new TabsPagerAdapter(getSupportFragmentManager());        viewPager.setAdapter(mTabsPagerAdapter);        //获取适配的actionbar        actionBar = getSupportActionBar();        //设置home按钮不可点击        actionBar.setHomeButtonEnabled(false);        //设置顶部导航的模式  -tabs        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        //添加标签        for(String tab:tabs)        {            actionBar.addTab(actionBar.newTab().setText(tab).setTabListener(this));         }        //设置ViewPager切换时候的监听事件        viewPager.setOnPageChangeListener(new OnPageChangeListener() {                        @Override            public void onPageSelected(int position) {                //页面滑动,顶部标签跟着改变                 actionBar.setSelectedNavigationItem(position);            }                        @Override            public void onPageScrolled(int arg0, float arg1, int arg2) {                // TODO Auto-generated method stub                            }                        @Override            public void onPageScrollStateChanged(int arg0) {                // TODO Auto-generated method stub                            }        });    }         @Override    public void onTabReselected(Tab arg0, FragmentTransaction arg1) {        // TODO Auto-generated method stub            }    @Override    public void onTabSelected(Tab tab, FragmentTransaction fragmentTransaction) {        //tab选中,切换viewpager        viewPager.setCurrentItem(tab.getPosition());    }    @Override    public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {        // TODO Auto-generated method stub            }     }


代码就是这样的,搞定收工了。示例代码下载

更多相关文章

  1. Android(安卓)五大布局(LinearLayout、FrameLayout、AbsoulteLayo
  2. Android中的RxJava
  3. Android(安卓)数据库SQLiteDatabase的使用
  4. Android退出当前应用程序的方法
  5. ListView去掉分割线
  6. Android(安卓)高手进阶教程(十三)之----Android(安卓)数据库SQLi
  7. [置顶] Android性能分析——Activity启动速度分析工具
  8. cocos2d jsb 打包 Android(安卓)APK
  9. Android(安卓)本地代码如何输出日志

随机推荐

  1. android6.0源码分析之AndroidRuntime的建
  2. android WebView总结
  3. Android(安卓)众多的布局属性详解
  4. 【Android布局】在程序中设置android:gra
  5. 【Gradle】Android(安卓)Gradle 插件
  6. Android入门教程(二十七)------之Style与
  7. Android程序实现全屏代码
  8. Android知识积累
  9. android:shape的使用
  10. The connection to adb is down, and a s