ViewPager的使用

ViewPager的使用


1.在activity_main中用ViewPager留出Fragment所占的位置,注意是v4包的

  <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

2.新建XML文件写单个Fragment要展示的内容,有几个Fragment就创建几个XML文件
3.创建一个类继承于v4包的FragmentPagerAdapter的FragmentAdapter类,重写他的getItem和getCount方法,写一个构造器,参数为FragmentManager的一个对象,new一个存储Fragment的容器(List)

private List<Fragment> fragments;
	public FragmentAdater(FragmentManager fm) {
		super(fm);
		fragments = new ArrayList<Fragment>();
	}

4.新建一个BaseFragment的基类继承于Fragment,在onCreateView时,新建一个布局,让这个布局铺满父容器,再将整个布局转为View return 出去

	protected View rootView;
	protected int layoutId;
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		ViewGroup view = new RelativeLayout(inflater.getContext());
		LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, -1);
		view.setLayoutParams(params);
		rootView = inflater.inflate(layoutId, view);
		return rootView;
	}

5.在类中也写一个findViewById的方法,使继承于他的类用

public View findViewById(int id) {
		return rootView.findViewById(id);
	}

6.将每个Fragment 的XML都创建相应的Fragment类继承自BaseFragment,设置他对应的XML文件

public class FindFragment extends BaseFragment {

	public FindFragment() {
		this.layoutId = R.layout.fragment_find;
	}
}

7.在mainActivity中初始化ViewPager,Activity必须是继承与FragmentActivity,否则getSupportFragmentManager()会报错

private void findView() {
		btmGroup = (RadioGroup) findViewById(R.id.btm_group);
		mViewPager = (ViewPager) findViewById(R.id.pager);//初始化ViewPager
		findViewById(R.id.btn1).setId(0);
		findViewById(R.id.btn2).setId(1);
		findViewById(R.id.btn3).setId(2);
		btmGroup.check(0);
	}

	@SuppressWarnings("deprecation")
	private void initFragment() {
		mAdapter = new FragmentAdater(getSupportFragmentManager());//新建一个自定义FragmentAdapter,获取到一个事务,要用v4包中FragmentAdapter的getSupportFragmentManager方法
		
		mAdapter.add(new HomeFragment());
		mAdapter.add(new FindFragment());
		mAdapter.add(new MyFragment());
		mViewPager.setAdapter(mAdapter);//给ViewPager设置Adapter
		
		/**
		 * 当Fragment视图改变时,对应的RadioButton的check也跟着改变
		 */
		mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
			@Override
			public void onPageSelected(int arg0) {
				btmGroup.check(arg0);
			}
			
			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
				
			}
			
			@Override
			public void onPageScrollStateChanged(int arg0) {
			}
		});
	}

	/**
	 * 当Group发生改变时,修改ViewPager视图为Group对应的Fragment
	 */
	private void init() {
		btmGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
				mViewPager.setCurrentItem(checkedId, true);//参数一为需要设置的RadioButton对应的id,参数二为是否有动画效果
			}
		});

	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值