美文网首页
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