今天写了个示例代码,就是使用Actionbar类实现顶部标签切换功能。如果所示。
使用最新的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,如需转载请自行联系原作者