viewpage与scrollview共存,viewpager不显示的解决办法

来源:互联网 发布:美橙域名管理地址 编辑:程序博客网 时间:2024/06/06 01:08

1.可以将viewpager的高度设成固定的,但是这样往往不满足需求

2.重写viewpager

package com.xuanji.hjygame.tool;


import android.content.Context;  
import android.graphics.PointF;  
import android.support.v4.view.ViewPager;  
import android.util.AttributeSet;  
import android.view.MotionEvent;  
  
public class ChildViewPager extends ViewPager{  
    PointF downP = new PointF();  
    PointF curP = new PointF();  
    OnSingleTouchListener onSingleTouchListener;  
   
    public ChildViewPager(Context context, AttributeSet attrs) {  
        super(context, attrs);  
        // TODO Auto-generated constructor stub  
    }
   
    public ChildViewPager(Context context) {  
        super(context);  
        // TODO Auto-generated constructor stub  
    }  
   
    @Override  
    public boolean onInterceptTouchEvent(MotionEvent arg0) {  
        // TODO Auto-generated method stub  
        return true;  
    }  
   
    @Override  
    public boolean onTouchEvent(MotionEvent arg0) {
      
        curP.x = arg0.getX();  
        curP.y = arg0.getY();  
   
        if(arg0.getAction() == MotionEvent.ACTION_DOWN){  
           
            downP.x = arg0.getX();  
            downP.y = arg0.getY();  
            
            //getParent().requestDisallowInterceptTouchEvent(true);  
        }  
   
        if(arg0.getAction() == MotionEvent.ACTION_MOVE){
        if(Math.abs(downP.x - curP.x) < 10){   
        }else{
           getParent().requestDisallowInterceptTouchEvent(true);
        }
        }  
   
        if(arg0.getAction() == MotionEvent.ACTION_UP){          
            if(downP.x==curP.x && downP.y==curP.y){  
                onSingleTouch(curP.x);  
                return true;
            }  
        }  
        return super.onTouchEvent(arg0);  
    }  


    /** 
     * 
     */
    public void onSingleTouch(float x) {  
        if (onSingleTouchListener!= null) {
        onSingleTouchListener.onSingleTouch(x);  
        }  
    }
    /** 
     *
     * 
     */  
    public interface OnSingleTouchListener {  
        public void onSingleTouch(float x);  
    } 
    public void setOnSingleTouchListener(OnSingleTouchListener onSingleTouchListener) {  
        this.onSingleTouchListener = onSingleTouchListener;  
    }   
}

0 0