ViewPager+Fragment实现左右滑动页
2015-11-16 02:06
495 查看
思路:
每一个Tab里面的内容都放到一个fragment里面,然后再每个fragment里面处理具体的业务逻辑,在主页面上,像加入view那样加入fragment.
首先来看fragment里面代码:
/**
* Created by LiuHuiChao on 2015/11/16.
*/
public class ViewPagerFragment1 extends Fragment {
private String text;
private TextView tv = null;
public ViewPagerFragment1(){}
@SuppressLint("ValidFragment")
public ViewPagerFragment1(String text){
super();
this.text = text;
}
/**
* 覆盖此函数,先通过inflater inflate函数得到view最后返回
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.tab1, container, false);
tv = (TextView)v.findViewById(R.id.tv);
tv.setText(text);
return v;
}
}
fragment对应的layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv"
android:textSize="20dp"
android:layout_gravity="center"
android:layout_weight="1"
android:text="tab1" />
</LinearLayout>
之后是主页:
/**
* Created by LiuHuiChao on 2015/11/16.
*/
public class ViewPagerFragment extends FragmentActivity {
/** 页面list **/
List<Fragment> fragmentList = new ArrayList<Fragment>();
/** 页面title list **/
List<String> titleList = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main3);
ViewPager pager=(ViewPager)findViewById(R.id.viewPagerThree);
fragmentList.add(new ViewPagerFragment1("页面1"));
fragmentList.add(new ViewPagerFragment1("页面2"));
fragmentList.add(new ViewPagerFragment1("页面3"));
titleList.add("title 1 ");
titleList.add("title 2 ");
titleList.add("title 3 ");
pager.setAdapter(new TestFragmentPagerAdapter(getSupportFragmentManager(), fragmentList, titleList));
}
class TestFragmentPagerAdapter extends FragmentPagerAdapter{
private List<Fragment> fragmentList;
private List<String> titleList;
public TestFragmentPagerAdapter(FragmentManager fm,List<Fragment> fragmentList,List<String> titleList) {
super(fm);
this.fragmentList=fragmentList;
this.titleList=titleList;
}
@Override
public CharSequence getPageTitle(int position) {
//return (titleList.size() > position) ? titleList.get(position) : "";
return titleList.get(position);
}
@Override
public Fragment getItem(int position) {
return (fragmentList == null || fragmentList.size() == 0) ? null : fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList == null ? 0 : fragmentList.size();
}
}
}
主页对应layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/viewPagerThree"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" >
<android.support.v4.view.PagerTabStrip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top" />
</android.support.v4.view.ViewPager>
</LinearLayout>
run了一下,发现以前自己想改掉的bug还在,明天再改吧,我的鱿鱼丝吃完了,而且我 也困了。感觉用fragment做的方式更好,感谢百度!明天收拾那两个小bug。晚安,亲们!
相关文章推荐
- ViewPager+Fragment实现左右滑动页
- 服务器架设篇-----CentOS架设WWW服务器-Nginx+Mysql+PHP
- JSP 甜点
- 关于创业,感觉这句话说到了点子上
- linux下php开发自定义扩展库
- jsp提交表单数据乱码,内置对象,以及过滤器
- 利用predis操作redis方法大全
- android HttpClient获取json数据
- redis的php类-使用socket通信
- 我的百度云地址
- 安卓 Activity(1) 基础和生命周期(马剑威)
- KVO(key value observer)浅解及实例
- 一看就明白的爬虫入门讲解:基础理论篇
- linux下php安装curl模块
- asterisk todo
- 关于yii2的中文乱码问题
- 《拓扑排序》hdu acm 5.2.4 c++优先队列 邻接表
- 服务器之间免密码ssh登陆
- ios开发调用OpenAL的alcOpenDevice(NULL)方法返回NULL的原因之一
- 机器学习在器官定位方面的应用