使用带有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>}中的但没有任何作用。
答案 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显示了如何获取当前显示的视图。