Seekbar не плавно прокручивается в окне просмотра - PullRequest
0 голосов
/ 03 мая 2019

Один фрагмент содержит видоискатель, имеющий два фрагмента.В первом из них панель поиска не прокручивается, но при попытке прокрутки перемещает видовой пейджер.Похоже, смещение виджета активируется при попытке прокрутки.Но проблема в том, что у меня такая же конфигурация типов в другом меню, и она работает.какое решение для этого?

1 Ответ

0 голосов
/ 03 мая 2019

Я понял, что оба фрагмента имели одно изменение.В одном из них был добавлен всплывающий экран, а в другом - нет.

После этого я решил, что решение будет примерно таким, как показано ниже.

Если кто-то все еще застрял с вопросом.Создайте пользовательский класс SwipeRefreshlayout и добавьте его в макет.

public class CustomSwipeRefresh extends SwipeRefreshLayout {
private int mTouchSlop;
private float mPrevX;
private boolean isDisabled;

public CustomSwipeRefresh(Context context, AttributeSet attrs) {
    super(context, attrs);
    mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}

public void disableInterceptTouchEvent(boolean isDisabled) {
    this.isDisabled = isDisabled;
    getParent().requestDisallowInterceptTouchEvent(isDisabled);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            mPrevX = MotionEvent.obtain(event).getX();
            break;
        case MotionEvent.ACTION_MOVE:
            if (isDisabled) {
                return false;
            }
            float eventX = event.getX();
            float xDiff = Math.abs(eventX - mPrevX);
            if (xDiff > mTouchSlop) {
                return false;
            }
    }
    return super.onInterceptTouchEvent(event);
    }
}

Затем в свой класс фрагментов с помощью панели поиска просто добавьте код

mswiperefresh.disableInterceptTouchEvent (boolean);включить и отключить ударную фокусировку.

 @Override public void onStartTrackingTouch(SeekBar seekBar) {
     mswiperefresh.disableInterceptTouchEvent(true);
      }

 @Override
     public void onStopTrackingTouch(SeekBar seekBar) {
          mswiperefresh.disableInterceptTouchEvent(false);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...