ViewPager 与 PagerTabStrip

ViewPager 与 PagerTabStrip的使用:

(1):这样的xml文件
这里写图片描述

(2):在代码中

这里写图片描述

下面是源码:
“`
package ……;

/**
* Created by XX on 2016/9/18.
* xxxx
*/

public class MyOrderActivity extends BaseActivity {
private ViewPager vpMyOrder = null;
private PagerTabStrip mTabStrip = null;
ArrayList viewContainer = new ArrayList();
ArrayList titleContainer = new ArrayList();
public String TAG = “tag”;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_order_activity);

    initUI();
    //默认显示第二项
    SetTab(1);
    setListener();
}

private void initUI() {
    vpMyOrder = (ViewPager) findViewById(R.id.vp_myOrder);
    mTabStrip = (PagerTabStrip) findViewById(R.id.tabStrpit);
    mTabStrip.setDrawFullUnderline(false);  //取消 Tab 底下的长横线
    mTabStrip.setBackgroundColor(Color.WHITE);  //设置tab的背景色
    mTabStrip.setTabIndicatorColor(getResources().getColor(R.color.mian_color));   //设置当前tab页签的下划线颜色
    mTabStrip.setTextSpacing(0);  //设置标题之间的间距

    ((ViewPager.LayoutParams) mTabStrip.getLayoutParams()).isDecor = true;

    View view1 = LayoutInflater.from(this).inflate(R.layout.a_tab1, null);
    View view2 = LayoutInflater.from(this).inflate(R.layout.a_tab2, null);
    View view3 = LayoutInflater.from(this).inflate(R.layout.a_tab3, null);
    View view4 = LayoutInflater.from(this).inflate(R.layout.a_tab4, null);
    View view5 = LayoutInflater.from(this).inflate(R.layout.a_tab5, null);

    //viewpager开始添加view
    viewContainer.add(view1);
    viewContainer.add(view2);
    viewContainer.add(view3);
    viewContainer.add(view4);
    viewContainer.add(view5);

    //标签
    titleContainer.add("全部订单");
    titleContainer.add("待付款");
    titleContainer.add("待发货");
    titleContainer.add("待收货");
    titleContainer.add("退货");

    vpMyOrder.setAdapter(new PagerAdapter() {

        //viewpager中的组件数量
        @Override
        public int getCount() {
            return titleContainer.size();
        }
        //滑动切换的时候销毁当前的组件
        @Override
        public void destroyItem(ViewGroup container, int position,Object object) {
            container.removeView(viewContainer.get(position));
        }
        //每次滑动的时候生成的组件
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            container.addView(viewContainer.get(position));
            return viewContainer.get(position);
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == arg1;
        }

        @Override
        public int getItemPosition(Object object) {
            return super.getItemPosition(object);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return titleContainer.get(position);
        }
    });
}

public void SetTab(int index)
{
    switch(index)
    {
        case 0:
            vpMyOrder.setCurrentItem(0);
            break;
        case 1:
            vpMyOrder.setCurrentItem(1);
            break;
        case 2:
            vpMyOrder.setCurrentItem(2);
            break;
    }

}
private void setListener() {
    vpMyOrder.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrollStateChanged(int arg0) {

        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {

        }

        @Override
        public void onPageSelected(int arg0) {

        }
    });
}

}“`

运行后的界面显示一下:
这里写图片描述
这里写图片描述
这里写图片描述

注:若在ViewPager中PagerTabStrip不显示:

【原因】:
在android 6.X(N)中(targetSdkVersion为24的时候),PagerTabStrip在viewPager中不会显示;

【解决的办法】:
在加载布局文件的时候,添加这一句代码,就能显示PagerTabStrip。
((ViewPager.LayoutParams) mPagerTabStrip.getLayoutParams()).isDecor = true;

第一次以这样的方式记录……

猜你喜欢

转载自blog.csdn.net/x_nuo/article/details/52574168
今日推荐