服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android基于ViewPager Fragment实现选项卡

Android基于ViewPager Fragment实现选项卡

2021-04-16 15:29Android教程网 Android

这篇文章主要介绍了Android基于ViewPager Fragment实现选项卡的相关资料,需要的朋友可以参考下

先给大家展示效果图:

Android基于ViewPager Fragment实现选项卡

1.新建testfragmen继承fragment

 
?
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
public class testfragment extends fragment {
  private static final string tag = "testfragment";
  private string hello;// = "hello android";
  private string defaulthello = "default value";
  private map<string, object=""> maplist;
  static testfragment newinstance(string s, map<string, object=""> map) {
    testfragment newfragment = new testfragment();
    // bundle bundle = new bundle();
    // bundle.putstring("hello", s);
    // newfragment.setarguments(bundle);
    final serializablemap mymap=new serializablemap();
    mymap.setmap(map);
    bundle bundle = new bundle();
    bundle.putserializable("map", mymap);
    newfragment.setarguments(bundle);
    return newfragment;
  }
  @override
  public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    log.d(tag, "testfragment-----oncreate");
    bundle args = getarguments();
   // hello = args != null ? args.getstring("hello") : defaulthello;
    bundle bundle = getarguments();
    serializablemap serializablemap = (serializablemap) bundle.get("map");
    maplist =serializablemap.getmap();
  }
  @override
  public view oncreateview(layoutinflater inflater, viewgroup container,bundle savedinstancestate) {
    log.d(tag, "testfragment-----oncreateview");
    view view = inflater.inflate(r.layout.lay1, container, false);
    // textview viewhello = (textview) view.findviewbyid(r.id.tv_hello);
    //viewhello.settext(maplist.get("userid")+"time");
    listview lv = (listview) view.findviewbyid(r.id.listview3);
    contactadapter hc = new contactadapter(getactivity().getapplicationcontext(),getcontact());
    lv.setadapter(hc);
    lv.setcachecolorhint(0);
    return view;
  }
  private arraylist<contact> getcontact(){
    arraylist<contact> hclist = new arraylist<contact>();
    for(int i=0;i<10;i++)
    {
    contact c0 = new contact();
    c0.settxpath(r.drawable.more_game+"");
    c0.setname(maplist.get("userid")+" 年龄:"+maplist.get("age"));
    hclist.add(c0);
    }
    return hclist;
  }
  @override
  public void ondestroy() {
    super.ondestroy();
    log.d(tag, "testfragment-----ondestroy");
  }
}
</contact></contact></contact></string,></string,>

2.myfragmentpageradapter继承fragmentpageradapter

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class myfragmentpageradapter extends fragmentpageradapter {
  private arraylist<fragment> fragmentslist;
  public myfragmentpageradapter(fragmentmanager fm) {
    super(fm);
  }
  public myfragmentpageradapter(fragmentmanager fm, arraylist<fragment> fragments) {
    super(fm);
    this.fragmentslist = fragments;
  }
  @override
  public int getcount() {
    return fragmentslist.size();
  }
  @override
  public fragment getitem(int arg0) {
    return fragmentslist.get(arg0);
  }
  @override
  public int getitemposition(object object) {
    return super.getitemposition(object);
  }
}
</fragment></fragment>

3.mainactivity 要继承fragmentactivity

 
?
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
public class mainactivity extends fragmentactivity {
  private static final string tag = "mainactivity";
  private viewpager mpager;
  private arraylist<fragment> fragmentslist;
  private imageview ivbottomline;
  private textview tvtabactivity, tvtabgroups, tvtabfriends, tvtabchat;
  private int currindex = 0;
  private int bottomlinewidth;
  private int offset = 0;
  private int position_one;
  private int position_two;
  private int position_three;
  private resources resources;
  @override
  public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    requestwindowfeature(window.feature_no_title);
    setcontentview(r.layout.main);
    resources = getresources();
    initwidth();
    inittextview();
    initviewpager();
  }
  private void inittextview() {
    tvtabactivity = (textview) findviewbyid(r.id.tv_tab_activity);
    tvtabgroups = (textview) findviewbyid(r.id.tv_tab_groups);
    tvtabfriends = (textview) findviewbyid(r.id.tv_tab_friends);
    tvtabchat = (textview) findviewbyid(r.id.tv_tab_chat);
    tvtabactivity.setonclicklistener(new myonclicklistener(0));
    tvtabgroups.setonclicklistener(new myonclicklistener(1));
    tvtabfriends.setonclicklistener(new myonclicklistener(2));
    tvtabchat.setonclicklistener(new myonclicklistener(3));
  }
  private void initviewpager() {
    mpager = (viewpager) findviewbyid(r.id.vpager);
    fragmentslist = new arraylist<fragment>();
    map<string, object=""> parammap = new hashmap<string, object="">();
    parammap.put("userid","小洪");
    parammap.put("age",23);
    map<string, object=""> parammap2 = new hashmap<string, object="">();
    parammap2.put("userid","vatty");
    parammap2.put("age",24);
    map<string, object=""> parammap3 = new hashmap<string, object="">();
    parammap3.put("userid","小明");
    parammap3.put("age",25);
    map<string, object=""> parammap4 = new hashmap<string, object="">();
    parammap4.put("userid","hongshengpeng.com");
    parammap4.put("age",26);
    fragment activityfragment = testfragment.newinstance("hello activity.",parammap);
    fragment groupfragment = testfragment.newinstance("hello group.",parammap2);
    fragment friendsfragment=testfragment.newinstance("hello friends.",parammap3);
    fragment chatfragment=testfragment.newinstance("hello chat.",parammap4);
    fragmentslist.add(activityfragment);
    fragmentslist.add(groupfragment);
    fragmentslist.add(friendsfragment);
    fragmentslist.add(chatfragment);
    mpager.setadapter(new myfragmentpageradapter(getsupportfragmentmanager(), fragmentslist));
    mpager.setcurrentitem(0);
    mpager.setonpagechangelistener(new myonpagechangelistener());
  }
  private void initwidth() {
    ivbottomline = (imageview) findviewbyid(r.id.iv_bottom_line);
    bottomlinewidth = ivbottomline.getlayoutparams().width;
    log.d(tag, "cursor imageview width=" + bottomlinewidth);
    displaymetrics dm = new displaymetrics();
    getwindowmanager().getdefaultdisplay().getmetrics(dm);
    int screenw = dm.widthpixels;
    offset = (int) ((screenw / 4.0 - bottomlinewidth) / 2);
    log.i("mainactivity", "offset=" + offset);
    position_one = (int) (screenw / 4.0);
    position_two = position_one * 2;
    position_three = position_one * 3;
  }
  public class myonclicklistener implements view.onclicklistener {
    private int index = 0;
    public myonclicklistener(int i) {
      index = i;
    }
    @override
    public void onclick(view v) {
      mpager.setcurrentitem(index);
    }
  };
  public class myonpagechangelistener implements onpagechangelistener {
    @override
    public void onpageselected(int arg0) {
      animation animation = null;
      switch (arg0) {
      case 0:
        if (currindex == 1) {
          animation = new translateanimation(position_one, 0, 0, 0);
          tvtabgroups.settextcolor(resources.getcolor(r.color.lightwhite));
        } else if (currindex == 2) {
          animation = new translateanimation(position_two, 0, 0, 0);
          tvtabfriends.settextcolor(resources.getcolor(r.color.lightwhite));
        } else if (currindex == 3) {
          animation = new translateanimation(position_three, 0, 0, 0);
          tvtabchat.settextcolor(resources.getcolor(r.color.lightwhite));
        }
        tvtabactivity.settextcolor(resources.getcolor(r.color.white));
        break;
      case 1:
        if (currindex == 0) {
          animation = new translateanimation(0, position_one, 0, 0);
          tvtabactivity.settextcolor(resources.getcolor(r.color.lightwhite));
        } else if (currindex == 2) {
          animation = new translateanimation(position_two, position_one, 0, 0);
          tvtabfriends.settextcolor(resources.getcolor(r.color.lightwhite));
        } else if (currindex == 3) {
          animation = new translateanimation(position_three, position_one, 0, 0);
          tvtabchat.settextcolor(resources.getcolor(r.color.lightwhite));
        }
        tvtabgroups.settextcolor(resources.getcolor(r.color.white));
        break;
      case 2:
        if (currindex == 0) {
          animation = new translateanimation(0, position_two, 0, 0);
          tvtabactivity.settextcolor(resources.getcolor(r.color.lightwhite));
        } else if (currindex == 1) {
          animation = new translateanimation(position_one, position_two, 0, 0);
          tvtabgroups.settextcolor(resources.getcolor(r.color.lightwhite));
        } else if (currindex == 3) {
          animation = new translateanimation(position_three, position_two, 0, 0);
          tvtabchat.settextcolor(resources.getcolor(r.color.lightwhite));
        }
        tvtabfriends.settextcolor(resources.getcolor(r.color.white));
        break;
      case 3:
        if (currindex == 0) {
          animation = new translateanimation(0, position_three, 0, 0);
          tvtabactivity.settextcolor(resources.getcolor(r.color.lightwhite));
        } else if (currindex == 1) {
          animation = new translateanimation(position_one, position_three, 0, 0);
          tvtabgroups.settextcolor(resources.getcolor(r.color.lightwhite));
        } else if (currindex == 2) {
          animation = new translateanimation(position_two, position_three, 0, 0);
          tvtabfriends.settextcolor(resources.getcolor(r.color.lightwhite));
        }
        tvtabchat.settextcolor(resources.getcolor(r.color.white));
        break;
      }
      currindex = arg0;
      animation.setfillafter(true);
      animation.setduration(300);
      ivbottomline.startanimation(animation);
    }
    @override
    public void onpagescrolled(int arg0, float arg1, int arg2) {
    }
    @override
    public void onpagescrollstatechanged(int arg0) {
    }
  }
}</string,></string,></string,></string,></string,></string,></string,></string,></fragment></fragment>

4.分别新建lay1.xml、 lay2.xml 、lay3.xml

lay1.xml

 
?
1
 
2
3
4
5
6
<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#fff" android:orientation="vertical">
  <textview android:id="@+id/tv_hello" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="textview" android:visibility="gone">
   <listview android:id="@+id/listview3" android:layout_width="match_parent" android:layout_height="wrap_content" android:cachecolorhint="@android:color/transparent" android:divider="@drawable/reader_item_divider" android:listselector="@android:color/transparent">
        </listview>
</textview></linearlayout>

lay2.xml

 
?
1
 
2
3
<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#ff8684">
</linearlayout>

lay3.xml与lay2.xml类型

 
?
1
 
2
3
<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#1586ff">
</linearlayout>

main.xml

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:umadsdk="http://schemas.android.com/apk/res/com.lovebus" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
  <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical">
    <linearlayout android:layout_width="match_parent" android:layout_height="48dip" android:background="@drawable/android_title_bg">
      <imageview android:id="@+id/imageview1" android:layout_width="36dip" android:layout_height="36dip" android:layout_gravity="center_vertical" android:layout_marginleft="10dip" android:src="@drawable/more_game">
      <textview android:id="@+id/textview1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginleft="10dip" android:text="乐够go" android:textappearance="?android:attr/textappearancelarge">
      <imageview android:id="@+id/imageview2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:paddingleft="10dip" android:src="@drawable/status_online" android:visibility="gone">
    </imageview></textview></imageview></linearlayout>
    <linearlayout android:id="@+id/linearlayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingbottom="5dip" android:paddingtop="10dip" android:background="@color/coral">
      <textview android:id="@+id/tv_tab_activity" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="@string/tab_1" android:textcolor="@color/white" android:textsize="18sp">
      <textview android:id="@+id/tv_tab_groups" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="@string/tab_2" android:textcolor="@color/lightwhite" android:textsize="18sp">
      <textview android:id="@+id/tv_tab_friends" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="@string/tab_3" android:textcolor="@color/lightwhite" android:textsize="18sp">
      <textview android:id="@+id/tv_tab_chat" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="@string/tab_4" android:textcolor="@color/lightwhite" android:textsize="18sp">
    </textview></textview></textview></textview></linearlayout>
    <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:orientation="vertical" android:paddingbottom="3dip">
      <imageview android:id="@+id/iv_bottom_line" android:layout_width="40dip" android:layout_height="2dip" android:layout_marginleft="20dip" android:scaletype="matrix" android:src="#fff">
    </imageview></linearlayout>
  </linearlayout>
</android.support.v4.view.viewpager></linearlayout>

ps:viewpager + fragment实现滑动标签页

viewpager 结合fragment实现一个activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应。

activity_main.xml

 
?
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
<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">
  <linearlayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <textview 
      android:id="@+id/tv_guid1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1.0"
      android:gravity="center"
      android:text="特性1"
      android:textsize="18sp"/>
    <textview 
      android:id="@+id/tv_guid2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1.0"
      android:gravity="center"
      android:text="特性2"  
      android:textsize="18sp"/> 
    <textview 
      android:id="@+id/tv_guid3"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1.0"
      android:gravity="center"
      android:text="特性3 "  
      android:textsize="18sp"/> 
    <textview 
      android:id="@+id/tv_guid4"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1.0"
      android:gravity="center"
      android:text="特性4"  
      android:textsize="18sp"/>
  </linearlayout>
  <imageview 
    android:id="@+id/cursor"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaletype="matrix"
    android:src="@drawable/cursor"/>
  <android.support.v4.view.viewpager
    android:id="@+id/viewpager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:flipinterval="30"
    android:persistentdrawingcache="animation"/>
</linearlayout>

mainactivity.java

 
?
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package com.example.viewpagernfragment;
import java.util.arraylist;
import android.graphics.bitmapfactory;
import android.graphics.matrix;
import android.os.bundle;
import android.support.v4.app.fragment;
import android.support.v4.app.fragmentactivity;
import android.support.v4.view.viewpager;
import android.support.v4.view.viewpager.onpagechangelistener;
import android.util.displaymetrics;
import android.view.menu;
import android.view.view;
import android.view.animation.animation;
import android.view.animation.translateanimation;
import android.widget.imageview;
import android.widget.textview;
import android.widget.toast;
public class mainactivity extends fragmentactivity {
  private viewpager mpager;
  private arraylist<fragment> fragmentlist;
  private imageview image;
  private textview view1, view2, view3, view4;
  private int currindex;//当前页卡编号
  private int bmpw;//横线图片宽度
  private int offset;//图片移动的偏移量
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
    inittextview();
    initimage();
    initviewpager();
  }
  /*
   * 初始化标签名
   */
  public void inittextview(){
    view1 = (textview)findviewbyid(r.id.tv_guid1);
    view2 = (textview)findviewbyid(r.id.tv_guid2);
    view3 = (textview)findviewbyid(r.id.tv_guid3);
    view4 = (textview)findviewbyid(r.id.tv_guid4);
    view1.setonclicklistener(new txlistener(0));
    view2.setonclicklistener(new txlistener(1));
    view3.setonclicklistener(new txlistener(2));
    view4.setonclicklistener(new txlistener(3));
  }
  public class txlistener implements view.onclicklistener{
    private int index=0;
    public txlistener(int i) {
      index =i;
    }
    @override
    public void onclick(view v) {
      // todo auto-generated method stub
      mpager.setcurrentitem(index);
    }
  }
  /*
   * 初始化图片的位移像素
   */
  public void initimage(){
    image = (imageview)findviewbyid(r.id.cursor);
    bmpw = bitmapfactory.decoderesource(getresources(), r.drawable.cursor).getwidth();
    displaymetrics dm = new displaymetrics();
    getwindowmanager().getdefaultdisplay().getmetrics(dm);
    int screenw = dm.widthpixels;
    offset = (screenw/4 - bmpw)/2;
    //imgageview设置平移,使下划线平移到初始位置(平移一个offset)
    matrix matrix = new matrix();
    matrix.posttranslate(offset, 0);
    image.setimagematrix(matrix);
  }
  /*
   * 初始化viewpager
   */
  public void initviewpager(){
    mpager = (viewpager)findviewbyid(r.id.viewpager);
    fragmentlist = new arraylist<fragment>();
    fragment btfragment= new buttonfragment();
    fragment secondfragment = testfragment.newinstance("this is second fragment");
    fragment thirdfragment = testfragment.newinstance("this is third fragment");
    fragment fourthfragment = testfragment.newinstance("this is fourth fragment");
    fragmentlist.add(btfragment);
    fragmentlist.add(secondfragment);
    fragmentlist.add(thirdfragment);
    fragmentlist.add(fourthfragment);
    //给viewpager设置适配器
    mpager.setadapter(new myfragmentpageradapter(getsupportfragmentmanager(), fragmentlist));
    mpager.setcurrentitem(0);//设置当前显示标签页为第一页
    mpager.setonpagechangelistener(new myonpagechangelistener());//页面变化时的监听器
  }
  public class myonpagechangelistener implements onpagechangelistener{
    private int one = offset *2 +bmpw;//两个相邻页面的偏移量
    @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 onpageselected(int arg0) {
      // todo auto-generated method stub
      animation animation = new translateanimation(currindex*one,arg0*one,0,0);//平移动画
      currindex = arg0;
      animation.setfillafter(true);//动画终止时停留在最后一帧,不然会回到没有执行前的状态
      animation.setduration(200);//动画持续时间0.2秒
      image.startanimation(animation);//是用imageview来显示动画的
      int i = currindex + 1;
      toast.maketext(mainactivity.this, "您选择了第"+i+"个页卡", toast.length_short).show();
    }
  }
  @override
  public boolean oncreateoptionsmenu(menu menu) {
    // inflate the menu; this adds items to the action bar if it is present.
    getmenuinflater().inflate(r.menu.main, menu);
    return true;
  }
}

谷歌官方认为,viewpager应该和fragment一起使用时,此时viewpager的适配器是fragmentpageradapter,当你实现一个fragmentpageradapter,你必须至少覆盖以下方法:

getcount()

getitem()

如果viewpager没有和fragment一起,viewpager的适配器是pageradapter,它是基类提供适配器来填充页面viewpager内部,当你实现一个pageradapter,你必须至少覆盖以下方法:

 
?
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
instantiateitem(viewgroup, int)
destroyitem(viewgroup, int, object)
getcount()
isviewfromobject(view, object)
[java] view plaincopy
package com.example.viewpagernfragment;
import java.util.arraylist;
import android.support.v4.app.fragment;
import android.support.v4.app.fragmentmanager;
import android.support.v4.app.fragmentpageradapter;
public class myfragmentpageradapter extends fragmentpageradapter{
  arraylist<fragment> list;
  public myfragmentpageradapter(fragmentmanager fm,arraylist<fragment> list) {
    super(fm);
    this.list = list;
  }
  @override
  public int getcount() {
    return list.size();
  }
  @override
  public fragment getitem(int arg0) {
    return list.get(arg0);
  }
}
[java] view plaincopy
package com.example.viewpagernfragment;
import android.os.bundle;
import android.support.v4.app.fragment;
import android.view.layoutinflater;
import android.view.view;
import android.view.viewgroup;
import android.widget.button;
import android.widget.toast;
public class buttonfragment extends fragment{
  button mybutton;
  @override
  public view oncreateview(layoutinflater inflater, viewgroup container,
      bundle savedinstancestate) {
    view rootview = inflater.inflate(r.layout.guide_1, container, false);//关联布局文件
    mybutton = (button)rootview.findviewbyid(r.id.mybutton);//根据rootview找到button
    //设置按键监听事件
    mybutton.setonclicklistener(new view.onclicklistener() {
      @override
      public void onclick(view v) {
        // todo auto-generated method stub
        toast.maketext(buttonfragment.this.getactivity(), "button is click!", toast.length_short).show();
      }
    });
    return rootview;
  }
}
[java] view plaincopy
package com.example.viewpagernfragment;
import android.os.bundle;
import android.support.v4.app.fragment;
import android.util.log;
import android.view.layoutinflater;
import android.view.view;
import android.view.viewgroup;
import android.widget.textview;
public class testfragment extends fragment {
  private static final string tag = "testfragment";
  private string hello;// = "hello android";
  private string defaulthello = "default value";
  static testfragment newinstance(string s) {
    testfragment newfragment = new testfragment();
    bundle bundle = new bundle();
    bundle.putstring("hello", s);
    newfragment.setarguments(bundle);
    //bundle还可以在每个标签里传送数据
    return newfragment;
  }
  @override
  public view oncreateview(layoutinflater inflater, viewgroup container,bundle savedinstancestate) {
    log.d(tag, "testfragment-----oncreateview");
    bundle args = getarguments();
    hello = args != null ? args.getstring("hello") : defaulthello;
    view view = inflater.inflate(r.layout.guide_2, container, false);
    textview viewhello = (textview) view.findviewbyid(r.id.tv);
    viewhello.settext(hello);
    return view;
  }
}
 
<?xml version="1.0" encoding="utf-8"?> 
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#ff0000ff"
  <button 
    android:id="@+id/mybutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="hit me"
    android:gravity="center"/>
</relativelayout> 
[html] view plaincopy
<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  android:background="#158684" >
  <textview
    android:id="@+id/tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="textview" />
</relativelayout>

 

延伸 · 阅读

精彩推荐