ViewPager嵌套ViewPager的问题

来源:互联网 发布:在线ping测试网络 编辑:程序博客网 时间:2024/05/29 17:57

package com.example.view;
import com.example.view.fragment.FirstFragment;
import com.example.view.fragment.SecondFragment;

import android.os.Bundle;
import android.app.Activity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Menu;

public class MainActivity extends FragmentActivity {
private ViewPager vp;
// viewpager嵌套viewpager时,会出现内部的viewpager划不动,必须重建一个类继承viewpager,在子viewpager的xml定义时,用自定义的viewpager
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 查找控件
vp = (ViewPager) findViewById(R.id.vp);
//设置适配器
vp.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager()));
}

class MyFragmentPagerAdapter extends FragmentPagerAdapter {    public MyFragmentPagerAdapter(FragmentManager fm) {        super(fm);    }    @Override    public Fragment getItem(int arg0) {        Fragment mm = null;        switch (arg0) {        case 0:            mm=new FirstFragment();            break;        case 1:            mm=new SecondFragment();            break;        case 2:            mm=new SecondFragment();            break;        }        return mm;    }    @Override    public int getCount() {        // TODO Auto-generated method stub        return 3;    }}

}

//子定义viewpager(子viewpager布局里用)
package com.example.view.viewpager;

import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager;

public class MyViewPager extends ViewPager {

private float x;//用来极坐标private float y;public MyViewPager(Context context, AttributeSet attrs) {    super(context, attrs);}//重写viewpager里的 dispatchTouchEvent 方法@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {    switch (ev.getAction()) {    case MotionEvent.ACTION_DOWN://当按下的时候        x=ev.getX();        y=ev.getY();        getParent().requestDisallowInterceptTouchEvent(true);//父类的viewpager容许子viewpager有滑动效果        break;    case MotionEvent.ACTION_UP:        break;    case MotionEvent.ACTION_CANCEL:        float x2 = ev.getX();        float y2 = ev.getY();        if(Math.abs(x2-x)>Math.abs(y2-y)){            getParent().requestDisallowInterceptTouchEvent(true);        }else{            getParent().requestDisallowInterceptTouchEvent(false);        }        break;    }    return super.dispatchTouchEvent(ev);}

}

//子viewpager的布局

0 0
原创粉丝点击