android fragment与ViewPager
来源:互联网 发布:单身狗 知乎 编辑:程序博客网 时间:2024/05/17 01:40
本篇文章,详细讲一下fragment 与ViewPager的结合。
fragment将在未来占据很大的地位,会被更多的利用,掌握fragment 与ViewPager的结合是必不可少的一项技能。
1.使用时,首先在布局文件里
<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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:background="#fff" tools:context="text.chen.example.com.test.ViewPagerActivity"> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center"><!--是界面上面的tab,显示当前页面--> <android.support.v4.view.ViewPagerTabStrip android:id="@+id/view_tab" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center"> </android.support.v4.view.ViewPagerTabStrip> <!--二选一,因为顶部的tab与底部的tab 只可以同时利用一个--> <!--<android.support.v4.view.PagerTitleStrip--> <!--android:id="@+id/title"--> <!--android:layout_height="wrap_content"--> <!--android:layout_width="wrap_content"--> <!--android:layout_gravity = "bottom"--> <!-->--> <!--</android.support.v4.view.PagerTitleStrip>--> </android.support.v4.view.ViewPager></LinearLayout>
2.本文不是讲解代码的,而是讲方法的。
1.当fragment里面的内容较少时,可以利用加载view 的方法来进行:
在java里面添加:
private List<View> viewList;//在onCreate方法里面添加 viewList = new ArrayList<View>(); View view1 = View.inflate(this, R.layout.view1, null); View view2 = View.inflate(this, R.layout.view2, null); View view3 = View.inflate(this, R.layout.view3, null); View view4 = View.inflate(this, R.layout.view4, null); viewList.add(view1); viewList.add(view2); viewList.add(view3); viewList.add(view4);再为tab添加一些属性和标题:
<span style="white-space:pre"></span>private PagerTabStrip tab; <span style="white-space:pre"></span>private List<String> titleList;<span style="white-space:pre"></span>//为ViewPager页卡设置标题 titleList = new ArrayList<String>(); titleList.add("first"); titleList.add("second"); titleList.add("third"); titleList.add("four"); //为PagerTabStrip设置一些属性 tab = (PagerTabStrip) findViewById(R.id.view_tab); tab.setBackgroundColor(Color.YELLOW);//tab字体颜色 tab.setTextColor(Color.RED);//字体颜色 tab.setDrawFullUnderline(false);//横线消失 tab.setTabIndicatorColor(Color.GREEN);//指示器颜色再进行ViewPager的初始化
<span style="white-space:pre"></span>viewPager = (ViewPager) findViewById(R.id.view_pager);再为其创建PagerAdapter适配器
最好为新建一个类继承与FragmentPagerAdapter,我在做这里创建的为:MyFragmentPagerAdapter
<span style="white-space:pre">/** * 创建PagerAdapter适配器 */</span>
<span style="white-space:pre"></span>MyPagerAdapter myPagerAdapter = new MyPagerAdapter(viewList, titleList); viewPager.setAdapter(myPagerAdapter);这样即可完成。
2.当fragment里面函数逻辑较为复杂时,就需要传fragment进行
<span style="white-space:pre"></span>private List<Fragment> fragmentList; /** * 通过Fragment作为VIewPAger的数据源 * */ fragmentList = new ArrayList<Fragment>(); fragmentList.add(new Fragment1()); fragmentList.add(new Fragment2()) ; fragmentList.add(new Fragment3()) ; fragmentList.add(new Fragment4());此时的适配器:
<span style="white-space:pre"></span>MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getSupportFragmentManager(),fragmentList,titleList); viewPager.setAdapter(adapter);
最后这个是我的adapter
package text.chen.example.com.test.adapter;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.view.ViewGroup;import java.util.List;/** * Created by chen on 15-2-5. */public class MyFragmentPagerAdapter extends FragmentPagerAdapter { private List<Fragment> fragmentList; private List<String> titleList;//构造函数的参数依据activity里面需要传的参数来设置,例如:<pre name="code" class="java">//fragmentList,在第一种传view时不需要:public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragmentList, List<String> titleList) { super(fm); this.fragmentList = fragmentList; this.titleList = titleList; } @Override public Fragment getItem(int i) { return fragmentList.get(i); } @Override public CharSequence getPageTitle(int position) { return titleList.get(position); } @Override public int getCount() { return fragmentList.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { return super.instantiateItem(container, position); }}
最后希望大家有所帮助!!!一点一点码出来也是蛮拼的
0 0
- android fragment与ViewPager
- android基础---ViewPager与fragment
- Android编程心得-ViewPager与Fragment初步
- Android初学习 - ViewPager与Fragment初步
- Android:Fragment 与 ViewPager的配合使用
- android viewpager+fragment与利用viewpager滑动分页小技巧
- android常用控件ViewPager(二) ViewPager与Fragment
- android viewpager+fragment与利用viewpager滑动分页小技巧
- Android Activity+ViewPager(Fragment)+Fragment
- Fragment 与 ViewPager
- TabLayout、ViewPager与Fragment
- Fragment与ViewPager
- android 中的 ViewPager+ Fragment
- android 中的 ViewPager+ Fragment
- Android ViewPager Fragment tab
- android 中的 ViewPager+ Fragment
- android 中的 ViewPager+ Fragment
- android 中的 ViewPager+ Fragment
- JUnit basic annotation
- C语言(五)extern和static关键字
- 基于W5500的NetBIOS应用实例
- cocos2dx的retain与release
- 微软发力抢占移动平台市场(Office、Acompli、Outlook、Sunrise等)
- android fragment与ViewPager
- js调用flex的代码
- bwlabel和bwconncomp区别
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)
- 新入的Android工程很多时候都会遇到这样的问题,R.mainactivity.xml报错,一看原来发现是R类访问不到我们的资源文件在这个时候怎么解决呢?
- Window 去掉 Git 右击菜单项
- 黑马程序员——c语言学习---选择结构
- 关于matlab中 CC = bwconncomp(A,4)命令的问题
- Ubuntu下解决Android Stiudio更新SDK问题