笔记43--ViewPager基本用法一

一、实现逻辑:

1、布局中加入ViewPager。2、加载要显示的页卡。3、设置适配器。

二、代码实现

1、布局中加入ViewPager,这个组件是用来显示左右滑动的界面的,如果不加载页卡,他是不显示内容的。

<android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
2、加载要显示的页卡

1)新建xml

<ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
2)将xml加载到页卡,viewList中存放的是要在ViewPager中显示的内容。如果要改变每页的数据,可以在此处更改

viewList=new ArrayList<View>();
//加载view
View view1=LayoutInflater.from(this).inflate(R.layout.test, null);
view1.findViewById(R.id.iv).setBackgroundResource(R.drawable.ic_launcher);

View view2=LayoutInflater.from(this).inflate(R.layout.test, null);
view2.findViewById(R.id.iv).setBackgroundResource(R.drawable.bestbang_head2);

viewList.add(view1);
viewList.add(view2);
3)配置适配器。将数据、适配器和ViewPager关联。

谷歌建议ViewPager和Fragment一起使用。实现一个PagerAdapter,必须至少覆盖以下方法:

①getCount()、②destroyItem(ViewGroup, int, Object)、③instantiateItem(ViewGroup, int)、④isViewFromObject(View, Object)

MyPagerAdapter adapter=new MyPagerAdapter();
viewPager.setAdapter(adapter);

class MyPagerAdapter extends PagerAdapter{

	@Override
	public int getCount() {
		return viewList.size();
	}

	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		return arg0 == arg1;//官方提示这样写
	}
		
	@Override
	public void destroyItem(ViewGroup container, int position, Object object) {
		container.removeView(viewList.get(position));//删除页卡
	}
		
	@Override
	public Object instantiateItem(ViewGroup container, int position) {
		container.addView(viewList.get(position));//添加页卡
		return viewList.get(position);
	}
}

三、PagerTabStrip和PagerTitleStrip

他俩都是ViewPager的指示器。PagerTabStrip效果是一个横的粗的下划线(带标题),PagerTitleStrip是用来显示各个页卡的标题。
用法:首先在xml中配置,然后在适配器里加载数据。

1) <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <android.support.v4.view.PagerTitleStrip
            android:id="@+id/pagertitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:visibility="gone" />

        <android.support.v4.view.PagerTabStrip
            android:id="@+id/pagertab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </android.support.v4.view.ViewPager>
2)@Override
public CharSequence getPageTitle(int position) {
	return titleList.get(position);//titleList=new ArrayList<String>();标题
}//适配器里重写此方法

pagerTabStrip.setTabIndicatorColor(getResources().getColor(R.color.gold));//设置指示器的颜色

pagerTabStrip.setBackgroundColor(getResources().getColor(R.color.azure)); //设置标题背景色       

pagerTabStrip.setTextSpacing(50);//设置间距无效,不知道为什么。

此种方式优点:页卡随着标题移动。缺点:无法设置标题间距,标题随着页卡消失而消失,不能固定显示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值