美文网首页
ViewPage的相关内容

ViewPage的相关内容

作者: 晨曦诗雨 | 来源:发表于2019-01-07 08:46 被阅读0次

ViewPage相当于一个容器,通过手势左右滑动
需要配置Adapter

  • PagerAdapter 数据源 对应与view的集合 List<View>
  • FragmentPagerAdapter 数据源 对应与fragfment集合 List<Fragment>
  • FragmentStatePagerAdapter 数据源 对应与fragfment集合 List<Fragment>

案例:

第一步:创建四个view.xml,一个activity.xml
第二步:创建一个适配器MyPageAdapter

public class MyPageAdapter  extends PagerAdapter{
    private List<View> viewList;

    public MyPageAdapter(List<View> viewList){
        this.viewList=viewList;
    }

    //返回的页面的数量
    @Override
    public int getCount() {
        return viewList.size();
    }

    //去判断当前view是否来至于对象
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }
//实例化一个页面
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        //添加一个viewList所对应的一个view对象
        container.addView(viewList.get(position));
        return viewList.get(position);
    }

    //销毁一个页面
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView(viewList.get(position));
    }
}

第三步:进行加载
重要代码:

public class SecondActivity extends AppCompatActivity{
    private List<View> viewList;
    private ViewPager viewPager;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        TextView textView=(TextView)findViewById(R.id.text);
        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);
        //初始化viewPage
        viewPager=(ViewPager) findViewById(R.id.page);

        //创建适配器
        MyPageAdapter adapter=new MyPageAdapter(viewList);

        //加载适配器
        viewPager.setAdapter(adapter);

    }
}

给每次页面设计一个标题 放到

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.view.ViewPager
        android:id="@+id/page"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <android.support.v4.view.PagerTabStrip
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tab"
            android:layout_gravity="top"
            />
    </android.support.v4.view.ViewPager>
</LinearLayout>

在java功能实现里设置样式标题

 //设置标题
        titleList=new ArrayList<String>();
        titleList.add("微信");
        titleList.add("通讯录");
        titleList.add("发现");
        titleList.add("我的");

        //tab初始化
        tabStrip=(PagerTabStrip)findViewById(R.id.tab);
        //标题背景色
        tabStrip.setBackgroundColor(Color.RED);
        //去掉下边框的线
        tabStrip.setDrawFullUnderline(false);
        //设置短小粗线的颜色
        tabStrip.setTabIndicatorColor(Color.GREEN);

也可以设置

<android.support.v4.view.PagerTitleStrip
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/title"
        android:layout_gravity="bottom"
        ></android.support.v4.view.PagerTitleStrip>

注意:PagerTitleStrip与PagerTabStrip不可以一起使用,会发生冲突

最后的结果就是可以实现页面可以滑动到,类似于微信

相关文章

网友评论

      本文标题:ViewPage的相关内容

      本文链接:https://www.haomeiwen.com/subject/bpcmkqtx.html