这几天学习了一下ViewPager+Fragement的基本使用方法并写了个Demo。现将代码和效果图放上。

  1. 首先是布局文件

?
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
 <RelativeLayout 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"
    tools:context=".MainActivity" >
     
    <!-- ViewPager组件 -->
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
               
        <!-- PagerTabStrip是标签页的切换效果 -->
        <android.support.v4.view.PagerTabStrip
            android:id="@+id/pagertab"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            />  
          
    </android.support.v4.view.ViewPager>
     
</RelativeLayout>
<!--注意事项:     
    1.这里ViewPager和 PagerTabStrip都要把包名写全了,不然会ClassNotFount    
    2.API中说:在布局xml把PagerTabStrip当做ViewPager的一个子标签来用,不能拿出来,不然还是会报错    
-->

2.MainActivity.java

MainActivity主要就做了一些加载控件和实例化Fragment的事情,重点要注意的是MyViewPagerAdapter这个适配器的内部类。

?
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
package com.xlp.myviewpagerfragment;
import java.util.ArrayList;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends FragmentActivity {
     private ViewPager m_vp;
     // 通过pagerTabStrip可以设置标题的属性
     private PagerTabStrip pagerTabStrip;
     private Fragment1 mfragment1;
     private Fragment2 mfragment2;
     private Fragment3 mfragment3;
     // 页面列表
     private ArrayList<Fragment> fragmentList;
     // 标题列表
     private ArrayList<String> titleList = new ArrayList<String>();
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  initView();
 }
 public void initView() {
      m_vp = (ViewPager) findViewById(R.id.viewpager);
      pagerTabStrip = (PagerTabStrip) findViewById(R.id.pagertab);
      // 设置下划线颜色
      pagerTabStrip.setTabIndicatorColor(getResources().getColor(
        android.R.color.holo_green_dark));
      pagerTabStrip.setBackgroundColor(getResources().getColor(
        android.R.color.holo_red_dark));
      mfragment1 = new Fragment1();
      mfragment2 = new Fragment2();
      mfragment3 = new Fragment3();
      fragmentList = new ArrayList<Fragment>();
      fragmentList.add(mfragment1);
      fragmentList.add(mfragment2);
      fragmentList.add(mfragment3);
      titleList.add("第一页");
      titleList.add("第二页");
      titleList.add("第三页");
      m_vp.setAdapter(new MyViewPagerAdapter(getSupportFragmentManager()));
 }
     public class MyViewPagerAdapter extends FragmentPagerAdapter {
          public MyViewPagerAdapter(FragmentManager fm) {
           super(fm);
      }
      @Override
      public Fragment getItem(int arg0) {
           return fragmentList.get(arg0);
      }
      @Override
      public int getCount() {
           return fragmentList.size();
      }
      @Override
      public CharSequence getPageTitle(int position) {
           // TODO Auto-generated method stub
           return titleList.get(position);
      }
 }
     @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;
     }
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      int id = item.getItemId();
      if (id == R.id.action_settings) {
       return true;
      }
      return super.onOptionsItemSelected(item);
     }
}

3.Fragment1.java

其中的一个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
58
 package com.xlp.myviewpagerfragment;
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;
public class Fragment1 extends Fragment {
 private View mMainView;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  Log.i("xlp""fragment1-->oncreate()");
  //动态加载布局文件
  LayoutInflater inflater = getActivity().getLayoutInflater();
  mMainView = inflater.inflate(R.layout.fragment1,
    (ViewGroup) getActivity().findViewById(R.id.viewpager), false);
 }
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
   Bundle savedInstanceState) {
  Log.i("xlp""fragment1-->onCreateView()");
  ViewGroup viewGroup = (ViewGroup) mMainView.getParent();
  return mMainView;
 }
 @Override
 public void onDestroy() {
  // TODO Auto-generated method stub
  super.onDestroy();
  Log.v("xlp""fragment1-->onDestroy()");
 }
 @Override
 public void onPause() {
  // TODO Auto-generated method stub
  super.onPause();
  Log.v("xlp""fragment1-->onPause()");
 }
 @Override
 public void onResume() {
  // TODO Auto-generated method stub
  super.onResume();
  Log.v("xlp""fragment1-->onResume()");
 }
 @Override
 public void onStart() {
  // TODO Auto-generated method stub
  super.onStart();
  Log.v("xlp""fragment1-->onStart()");
 }
 @Override
 public void onStop() {
  // TODO Auto-generated method stub
  super.onStop();
  Log.v("xlp""fragment1-->onStop()");
 }
}

4.最后放上效果图

Android中ViewPager+Fragment的基本使用相关推荐

  1. android中viewpager+fragment,ViewPager和Fragment一篇就够了

    ViewPager显示多Fragment使用问题 前言:每当使用ViewPager时,对于选用什么适配器,缓存多少页面,是否需要懒加载以及Fragment的数据刷新经常会有些疑问,网络上的答案很多,但 ...

  2. android中viewpager+fragment,Android开发之ViewPager+Fragment

    使用步骤 1.Activity的布局文件 android:id="@+id/viewpager" android:layout_width="wrap_content&q ...

  3. android 弹出fragment,Android中ViewPager获取当前显示的Fragment

    前言 在项目中,有时会用到在ViewPager中显示同样类型的Fragment,同时这样的Fragment的个数是动态的,但是PagerAdapter没有给我们提供getCurrentFragment ...

  4. 视频教程-Android之ViewPager,Fragment知识全讲-Android

    Android之ViewPager,Fragment知识全讲 刘志远,北京邮电大学硕士研究生, 北京育华志远科技有限公司创始人, 育华志远教育品牌负责人,育华志远课程体系打造者. 率领团队为互联网行业 ...

  5. android左右滑动fragment,Android基于ViewPager+Fragment实现左右滑屏效果的方法

    本文实例讲述了Android基于ViewPager+Fragment实现左右滑屏效果的方法.分享给大家供大家参考,具体如下: 1.xml布局模板 android:id="@+id/local ...

  6. 微信小程序手把手教你实现类似Android中ViewPager控件效果

    微信小程序手把手教你实现类似Android中ViewPager控件效果 前言 需求分析 头部TAB 滑动的内容部分 最终版本 尾巴 前言 在做Android开发的时候,ViewPager是开发者使用频 ...

  7. Android清空Fragment缓存,如何在Android中清除Fragment Backstack

    如何在Android中清除Fragment Backstack 您好如何清除片段回堆栈正在使用以下逻辑,它不起作用... for(int i = 0; i < mFragmentManager. ...

  8. Android:viewpager+ fragment模拟微信首页

    viewpager+ fragment viewpager+ fragment模拟微信首页 1.前言 2.实现 viewpager+ fragment模拟微信首页 1.前言 ViewPager(视图滑 ...

  9. Android中使用fragment出现异常,Error inflating class fragment

    异常: 在xml文件中静态引用fragment,出现了以下异常: Caused by: android.view.InflateException: Binary XML file line #9 i ...

最新文章

  1. slub object 内存布局
  2. 七月新增开源项目:你学习的速度跟得上前端造轮子的速度吗?
  3. #ifndef 在头文件中的作用
  4. 迪捷软件团队研发的国产替代MBSE系统建模仿真软件
  5. nodejs 读取excel文件,并去重
  6. 诺基亚E5删除自己安装的应用程序
  7. DevExpress 换肤
  8. JVM调优总结(转)
  9. caffee2安装 踩坑记录
  10. 数据中心机房建设项目技术方案
  11. C语言乘法口诀表代码
  12. python 驱动工控机板卡,研华工控机主板驱动下载
  13. 服务器SN信息,查询服务器sn号
  14. 日常百度SEO优化技巧
  15. iPhone启动页尺寸
  16. 单核性能强的服务器cpu,Cpu单核性能强和多核性能强都有什么用?
  17. 最大团问题(使用递归和非递归两种方法)
  18. window下利用ip反查域名与利用域名查ip
  19. 邓亚萍的即刻搜索:推民生产品搜索曝光不良食品
  20. SCI一区期刊专辑征稿 | 社会大数据隐私、安全与前沿计算主题

热门文章

  1. 【开发环境】StarUML 工具 ( 下载软件 | StarUML 安装 | StarUML 创建工程 )
  2. 【词汇】ab-前缀、al-后缀、norm-词根
  3. 【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )
  4. 【iOS 开发】Objective-C 运算符
  5. The copy of Windows is not genuine-微软自己用盗版
  6. openstack--glance
  7. 课堂测试-找英语单词最长链
  8. 如何将一个数组对象 把对象的值用指定符号连接起来 再转为数组 将数组用逗号分隔...
  9. 个人随笔之《我有一个需要妈妈帮我实现的愿望》
  10. WordCount单词计数