如何防止在NonScrollableViewPager中单击其他选项卡?

时间:2019-01-10 07:47:30

标签: java android view android-viewpager

我禁用使用TabLayout滑动ViewPager,如下所示:

public class NonScrollableViewPager extends ViewPager {

    public NonScrollableViewPager(Context context) {
        super(context);
        init(context, null);
    }

    public NonScrollableViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs);
    }

    private void init(Context context, AttributeSet attrs) {
        setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        // Never allow swiping to switch between pages
        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // Never allow swiping to switch between pages
        return false;
    }
}

在选择选项卡之一时,如何防止其他选项卡可点击,然后进行计算,然后启用可点击。 ViewPager.setClickable(false)setEnabled()不起作用

disable clickable
// do something
enable clickable

该怎么做?

1 个答案:

答案 0 :(得分:0)

我假设您正在将TabLayout和ViewPager一起使用。因此,您需要执行以下操作

LinearLayout tabStrip = ((LinearLayout) your_tab_layout.getChildAt(0));
for(int i = 0; i < tabStrip.getChildCount(); i++) {
    tabStrip.getChildAt(i).setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return true;
        }
    });
}

对于API 24及更高版本

your_tab_layout.clearOnTabSelectedListeners();

希望这会有所帮助