Как предотвратить нажатие на другую вкладку в NonScrollableViewPager? - PullRequest
0 голосов
/ 10 января 2019

Я отключаю смахивание ViewPager с TabLayout, как показано ниже:

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 голосов
/ 10 января 2019

Я предполагаю, что вы используете 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();

Надеюсь, это поможет

...