手势导航:缺少 ViewCompat 中的 setSystemGestureExclusionRects() 方法 class
Gesture navigation: missing the setSystemGestureExclusionRects() method in the ViewCompat class
Android 有 View.setSystemGestureExclusionRects()
API 可以在 Android 10 的指定区域禁用 "back" 手势。添加此 API在API级别29,所以在使用前一定要检查SDK版本:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
view.systemGestureExclusionRects = listOf(...)
}
The official documents says,即ViewCompat
class也包含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.2.0
中找到它。例如,here is the ViewCompat
from 1.2.0-rc01
,当前最新版本(截至 2020 年 1 月 10 日)。它具有您寻求的功能......虽然它几乎就是您的代码片段显示的内容,但仅在 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,我提交了 a bug report about the documentation error。
Android 有 View.setSystemGestureExclusionRects()
API 可以在 Android 10 的指定区域禁用 "back" 手势。添加此 API在API级别29,所以在使用前一定要检查SDK版本:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
view.systemGestureExclusionRects = listOf(...)
}
The official documents says,即ViewCompat
class也包含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.2.0
中找到它。例如,here is the ViewCompat
from 1.2.0-rc01
,当前最新版本(截至 2020 年 1 月 10 日)。它具有您寻求的功能......虽然它几乎就是您的代码片段显示的内容,但仅在 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,我提交了 a bug report about the documentation error。