Android之Actionbar顶部标签的使用

简介:

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

  wKioL1PbOnvTIWiZAACPg7me6ZI290.jpg


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

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

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


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

1
2
3
4
5
< android.support.v4.view.ViewPager  xmlns: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

1
public  class  MainActivity  extends  ActionBarActivity  implements  TabListener {


3、创建TabsPagerAdapter继承FragmentPagerAdapter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<? xml  version = "1.0"  encoding = "utf-8" ?>
< RelativeLayout  xmlns:android = "http://schemas.android.com/apk/res/android"
     android:layout_width = "match_parent"
     android:layout_height = "match_parent"
     android:background = "#43ff00ff"  >
 
     < TextView
         android: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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<? xml  version = "1.0"  encoding = "utf-8" ?>
< RelativeLayout  xmlns:android = "http://schemas.android.com/apk/res/android"
     android:layout_width = "match_parent"
     android:layout_height = "match_parent" 
     android:background = "#9445f353" >
 
     < TextView
         android: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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<? xml  version = "1.0"  encoding = "utf-8" ?>
< RelativeLayout  xmlns:android = "http://schemas.android.com/apk/res/android"
     android:layout_width = "match_parent"
     android:layout_height = "match_parent"
     android:background = "#34fef443"  >
 
     < TextView
         android: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中,并处理点击滑动事件。完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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
         
     }
 
      
}


代码就是这样的,搞定收工了。


本文转自xuzw13 51CTO博客,原文链接:http://blog.51cto.com/xuzhiwei/1533803,如需转载请自行联系原作者

相关文章
|
5月前
|
移动开发 JavaScript Java
关于Android中如何过滤HTML标签
关于Android中如何过滤HTML标签
65 0
|
5月前
Android-自定义流布局标签
Android-自定义流布局标签
59 0
|
7月前
|
Android开发
Android中去掉ActionBar的几种方法
Android中去掉ActionBar的几种方法
169 0
|
7月前
|
XML Java Android开发
Android Studio App开发中工具栏Toolbar、溢出菜单OverflowMenu、标签布局TabLayout的讲解及实战(实现京东App的标签导航栏,附源码)
Android Studio App开发中工具栏Toolbar、溢出菜单OverflowMenu、标签布局TabLayout的讲解及实战(实现京东App的标签导航栏,附源码)
685 0
|
Android开发
Android 获取include标签中的控件属性并设置事件
Android 获取include标签中的控件属性并设置事件
194 0
|
Android开发 网络虚拟化
Android 13.0 StatusBar顶部图标加载流程
Android 13.0 StatusBar顶部图标加载流程
|
Android开发
Android 10.0 顶部状态栏系统图标显示分析
Android 10.0 顶部状态栏系统图标显示分析
|
Android开发
|
Android开发
【Android 逆向】IDA 工具使用 ( 重命名函数 | 添加注释 | 添加标签 / 跳转标签 | 代码跳转前进 / 后退 )(二)
【Android 逆向】IDA 工具使用 ( 重命名函数 | 添加注释 | 添加标签 / 跳转标签 | 代码跳转前进 / 后退 )(二)
202 0
【Android 逆向】IDA 工具使用 ( 重命名函数 | 添加注释 | 添加标签 / 跳转标签 | 代码跳转前进 / 后退 )(二)
|
Java Android开发
【Android 逆向】IDA 工具使用 ( 重命名函数 | 添加注释 | 添加标签 / 跳转标签 | 代码跳转前进 / 后退 )(一)
【Android 逆向】IDA 工具使用 ( 重命名函数 | 添加注释 | 添加标签 / 跳转标签 | 代码跳转前进 / 后退 )(一)
427 0
【Android 逆向】IDA 工具使用 ( 重命名函数 | 添加注释 | 添加标签 / 跳转标签 | 代码跳转前进 / 后退 )(一)