当前位置:首页 > 今天的世界杯

android - “这种类型是最终的,所以它不能被继承” - ViewPager2

admin 2025-12-08 02:59:47 6378

NestedScrollableHost 类完全符合您的要求:https ://github.com/android/views-widgets-samples/blob/master/ViewPager2/app/src/main/java/androidx/viewpager2/integration/testapp/ NestedScrollableHost.kt

基本思想是您通过该方法覆盖onInterceptTouchEvent并请求 NestedScrollableHost 的父级(在本例中为ViewPager2)以禁止它拦截触摸事件requestDisallowInterceptTouchEvent。

// Pseudo-code for NestedScrollableHost

@Override

public boolean onInterceptTouchEvent(MotionEvent event) {

handleInterceptTouchEvent(event);

return super.onInterceptTouchEvent(event);

}

private void handleInterceptTouchEvent(MotionEvent event) {

// Early return if parent viewpager is null or child can't scroll in same direction as parent

if (getParentViewPager() == null ||

(!canChildScrollVertically(-1f) && !canChildScrollVertically(1f))) {

return;

}

switch (event.getAction()) {

// You can tailor your class to handle the event in the way you want to,

// e.g. do something on down and move events:

case MotionEvent.ACTION_DOWN:

// Disallow the parent (and all subsequent parents) to intercept touch events.

getParent().requestDisallowInterceptTouchEvent(disallow);

case MotionEvent.ACTION_MOVE:

// Some other logic.

}

}

您可以将 NestedScrollableHost 放在XML 中的ViewPager2和(在您的情况下)之间SeekBarPreference。