public class FragAdapter extends FragmentPagerAdapter {

    private List<Fragment> fragments ;

    public FragAdapter(FragmentManager fm){
super(fm);
} public FragAdapter(FragmentManager fm,List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
} @Override
public Fragment getItem(int position) {
return fragments.get(position);
} @Override
public int getCount() {
return fragments.size();
} /**
* add the fragment to the special position
* @param location the position be added to.
* @param fragment
*/
public void addFragment(int location,Fragment fragment){
this.fragments.add(location, fragment);
this.notifyDataSetChanged();
}
/**
* add the fragment to the default position.the end of the list.
* @param fragment
*/
public void addFragment(Fragment fragment){
this.fragments.add(fragment);
this.notifyDataSetChanged();
}
}

MyFragment.java:

public class MyFragment extends Fragment {

    private static final String TEXT_CHAT = "CHAT";

    /**
* Factory method to generate a new instance of the fragment given a string .
*
* @param char 主页面要传过来的信息
* @return A new instance of MyFragment with chat extras
*/
public static MyFragment newInstance(String chat) {
final MyFragment f = new MyFragment(); final Bundle args = new Bundle();
args.putString(TEXT_CHAT, chat);
f.setArguments(args);
return f;
} @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.myfragment, container, false);
TextView tv = (TextView) view.findViewById(R.id.tv_fragment_text);
String str = getArguments() != null ? getArguments().getString(TEXT_CHAT) : null;
if(str != null){
tv.setText(str);
}else{
tv.setText("获取字段出错了,求指导");
}
return view;
} @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
} }

MainActivity.java:

public class MainActivity extends FragmentActivity implements OnClickListener {

    private ViewPager vp;
private TextView tv_no1;
private TextView tv_no2; private FragAdapter adapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.vp_main);
tv_no1 = (TextView) findViewById(R.id.tv_no1);
tv_no2 = (TextView) findViewById(R.id.tv_no2); tv_no1.setOnClickListener(this);
tv_no2.setOnClickListener(this); initViewPage();
} /**
* 初始化 view page的相关数据
*/
private void initViewPage() { List<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(MyFragment.newInstance("我是第一个界面,看到我,看到我"));
fragments.add(MyFragment.newInstance("我是第二个界面,看到我,看到我")); adapter = new FragAdapter(getSupportFragmentManager(), fragments);
vp.setAdapter(adapter);
vp.setCurrentItem();
changeTextColor();
vp.setOnPageChangeListener(new MyVPageChangeListener()); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
} private class MyVPageChangeListener implements OnPageChangeListener { @Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub } @Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub } @Override
public void onPageSelected(int location) {
changeTextColor(location);
} } /**
* 设置下面文本的颜色。
* @param location
*/
private void changeTextColor(int location) {
switch (location) {
case :
tv_no1.setTextColor(Color.RED);
tv_no2.setTextColor(Color.CYAN);
break;
case :
tv_no2.setTextColor(Color.RED);
tv_no1.setTextColor(Color.CYAN);
break;
default:
break;
}
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_no1:
vp.setCurrentItem();
break;
case R.id.tv_no2:
vp.setCurrentItem();
break;
default:
break;
}
} }

FragAdapter.java:

Android:Fragment+ViewPager实现Tab滑动的更多相关文章

  1. Android之仿微信Tab滑动

    这个项目实现了以下的功能:有三个标签聊天.发现和通讯录,左右滑动下面的ViewPager可以切换不同的标签,且标签下面的蓝色条可以随着手指的滑动来实时滑动.另外,如果第二次滑动到“聊天”界面,可以在“ ...

  2. 114、Android禁止ViewPager的左右滑动

    有时候在开发中会遇到一些“诡异”的要求,比如在ViewPager中嵌入ListView,或者再嵌入一个ViewPager,那么在滑动的时候就会造成被嵌入的XXView不能滑动了,那么现在就把最外层的V ...

  3. Android listview viewpager解决冲突 滑动

    Android listview viewpager滑动 跳动 冲突解决 ListView中嵌套ViewPage有或者滑动手势冲突解决   在listview 上使用 addHeaderView 在第 ...

  4. Android禁止ViewPager的左右滑动

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/40744287 有时候在开发中会遇到一些"诡异"的要求,比方在V ...

  5. 011 Android TabLayout+ViewPager实现顶部滑动效果(多个页面)

    1.TabLayout介绍 TabLayout提供了一个水平的布局用来展示Tabs,很多应用都有这样的设计,典型的有网易新闻,简书,知乎等.TabLayout就可以很好的完成这一职责,首先TabLay ...

  6. [Android]使用ViewPager实现图片滑动展示

    在淘宝等电商的APP首页经常能看到大幅的广告位,通常有多幅经常更新的图片用于展示促销信息,如下图所示: 通常会自动滚动,也可以根据手势滑动.我没有研究过人家的APP是通过什么实现的,可能有第三方已经封 ...

  7. Android使用ViewFlipper实现左右滑动效果面

    在我的博客中,上次是使用ViewPager实现左右滑动的效果的,请看文章:Android使用ViewPager实现左右滑动效果. 这次我来使用ViewFlipper实现这种效果,好了,先看看效果吧: ...

  8. ViewPager+Fragment再探:和TAB滑动条一起三者结合

    Fragment前篇: <Android Fragment初探:静态Fragment组成Activity> ViewPager前篇: <Android ViewPager初探:让页面 ...

  9. Android典型界面设计——ViewPage+Fragment实现区域顶部tab滑动切换

    一.问题描写叙述 本系列将结合案例应用,陆续向大家介绍一些Android典型界面的设计,首先说说tab导航,导航分为一层和两层(底部区块+区域内头部导航).主要实现方案有RadioGroup+View ...

随机推荐

  1. Jsp与servlet之间页面跳转及参数传递实例(转)

    原网址:http://blog.csdn.net/ssy_shandong/article/details/9328985 11. jsp与servlet之间页面跳转及参数传递实例 分类: Java ...

  2. VS2013 右键监视,未能计算表达式的值

    工具>选项>调试>常规:将红框中的勾上,重新运行就可以了. https://weblog.west-wind.com/posts/2013/Nov/21/Visual-Studio- ...

  3. CPrintDialog

    CPrintDialog 封装windows为打印提供服务的通用窗体. BOOL GetDefaults(); //获取默认设备,不显示对话框 // Helpers for parsing infor ...

  4. OC1_数组创建

    // // main.m // OC1_数组创建 // // Created by zhangxueming on 15/6/11. // Copyright (c) 2015年 zhangxuemi ...

  5. 08_rlCoachKin自主编译,调试

    为了知道参数的意思,以及为了从头建立一个项目,我从使用QTCreator来单独建立项目(当然也可以直接使用源代码中建立好的VS项目). 其实也推荐 VS2010调试 如果是用自带的VS项目,那么我们需 ...

  6. linux下screen工具的简单使用

    有时候,希望即使退出终端了,下次登录linux的时候,还能回到程序的控制界面,这个时候,screen工具就很有用了例如,写了一个从控制台读取屏幕输入的程序input_test,如果从终端退出了,下次登 ...

  7. Windows Linux HackMacintosh

    我想把Windows Linux HackMacintosh三类系统融入到一台笔记本上的神经病应该不多. 我的电脑就一个SATA硬盘,BIOS还不是EFI的.一共同时安装了Windows 8.1.Op ...

  8. mysql alter的常用用法

    增加字段,并加注释: ALTER TABLE table_name ADD field_name field_type [not null|null|default value][comment '注 ...

  9. linux下tomcat的安装

    本文主要内容: (1)安装apr,这是 Apache 为了提升 Tomcat 的性能搞的一套本地化 Socket, Thread, IO 组件也就是说它有高级 IO 功能, 操作系统级别的功能调用, ...

  10. [PHP] chr和ord函数实现字符串和ASCII码互转

    chr和ord函数是用来字符串和ASCII码互转的.  ASCII码是计算机所能显示字符的编码,它的取值范围是0-255,其中包括标点.字母.数字.汉字等.在编程过程中,经常把指定的字符转化为ASCI ...