Навигация по жестам: отсутствует метод setSystemGestureExclusionRects () в классе ViewCompat - PullRequest
1 голос
/ 10 января 2020

Android имеет API View.setSystemGestureExclusionRects() для отключения жестов «назад» в указанных областях для Android 10. Этот API добавлен на уровне API 29, поэтому мы должны проверить версию SDK перед его использованием:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
   view.systemGestureExclusionRects = listOf(...)
}

В официальных документах говорится , что класс ViewCompat также содержит метод setSystemGestureExclusionRects(). Это позволило бы избежать проверки версии SDK:

ViewCompat.setSystemGestureExclusionRects(...)

Этот метод должен быть доступен, начиная с androidx.core:core:1.1.0-dev01. В моем проекте у меня есть зависимость implementation 'androidx.core:core:1.1.0'. Версия «1.1.0» более поздняя, ​​чем «1.1.0-dev01», но метод ViewCompat.setSystemGestureExclusionRects() отсутствует. Почему?

1 Ответ

1 голос
/ 10 января 2020

Это похоже на ошибку документации. Вы найдете это в 1.2.0. Например, - это ViewCompat из 1.2.0-rc01, текущей последней версии (по состоянию на 10 января 2020 года). Он имеет функцию, которую вы ищете ... хотя это в значительной степени то, что показывает ваш фрагмент кода, только в Java:

/**
 * Sets a list of areas within this view's post-layout coordinate space where the system
 * should not intercept touch or other pointing device gestures. <em>This method should
 * be called by {@link View#onLayout(boolean, int, int, int, int)} or
 * {@link View#onDraw(Canvas)}.</em>
 * <p>
 * On devices running API 28 and below, this method has no effect.
 *
 * @param rects A list of precision gesture regions that this view needs to function correctly
 * @see View#setSystemGestureExclusionRects
 */
public static void setSystemGestureExclusionRects(@NonNull View view,
        @NonNull List<Rect> rects) {
    if (Build.VERSION.SDK_INT >= 29) {
        view.setSystemGestureExclusionRects(rects);
    }
}

FWIW, я подал отчет об ошибке в документации ошибка .

...