禁用viewpager的特定子节点(包含拖放)

时间:2014-02-14 04:43:26

标签: android android-viewpager

使用带有PageAdapter的动态创建的viewpager,作为

myViewPager = ControlVP(context); where

public class ControlVP extends ViewPager {


    public ControlViewPager(Context context) {


        super(context);
        }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {

            return false;

    }


        @Override
    public boolean onTouchEvent(MotionEvent event) {


    static final int MIN_DISTANCE = 100;
        float DOWNx = 0;


                float UPx=0;

        boolean ret=false;

        switch (event.getAction()) {

        case MotionEvent.ACTION_DOWN: {//

            DOWNx = event.getX();

        }

        case MotionEvent.ACTION_UP: {

            UPx = event.getX();

        }
        if(UPx-DOWNx>MIN_DISTANCE)

        {
             ret=true;

        }

        }
                return ret;
    }

}

但是它导致整个视图禁用viewpager,但我想要的是为前两个片段启用viewpager并为第三个片段禁用它,因为第三个片段包含拖放,是否可能,提前 我也试过

int[] childIdArr =
      {R.id.iA,R.id.iAA1,R.id.iAAA2};

int sourceId =event.getSource();

      for(int i=0;i<=childIdArr.length;i++) {

          if(sourceId == i)

{   return false;    } 

else {   return true; } 


}
<{1>}中的

但没有任何作用。

1 个答案:

答案 0 :(得分:0)

在ViewPager的onPageSelected事件中,您可以获取当前显示的视图,然后禁用该视图。

    pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                // on changing the page
                                //if (position == position_to_disable)    
                //see link https://stackoverflow.com/questions/12854783/android-viewpager-get-the-current-view
                                //to see how you get the current view
                                //then set view.setEnabled(false);
            }

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

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });

链接Android ViewPager get the current View显示了如何获取当前显示的视图。