簡體   English   中英

垂直 ViewPager2 內的垂直 ScrollView 不工作 Android

[英]Vertical ScrollView inside vertical ViewPager2 not working Android

我有一個由 2 Fragments組成的垂直方向的基本ViewPager2

Fragment 2 中,我有一個垂直的ScrollView

兩個垂直滾動都存在沖突,並且無法正常工作。 我知道有很多類似的問題,但我發現和嘗試的一切都失敗了。

我正在尋找一種可以同時處理觸摸事件的解決方案。

任何代碼示例或領導謝謝

我終於通過編寫我的自定義滾動視圖來處理垂直滾動來解決我的問題:

public class CustomScrollView extends NestedScrollView {

    public CustomScrollView(@NonNull Context context) {
        super(context);
    }
    public CustomScrollView(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }
    public CustomScrollView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    float startY, dy;

    @Override
    protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
        super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
        if (scrollY > 15) { // 10 - 15 -> avoid fake mouv
            viewPager2.setUserInputEnabled(false);
        }
        else {
            viewPager2.setUserInputEnabled(true);
        }
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) {
                startY = ev.getRawY();
        }
        return super.onInterceptTouchEvent(ev);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        switch (ev.getActionMasked()) {
            case MotionEvent.ACTION_DOWN:
                startY = ev.getRawY();
                break;
            case MotionEvent.ACTION_MOVE:
                dy = ev.getRawY() - startY;
                if (dy > -5 && dy < 70) { // range tested on 5 devices but can be modified
                    return false;
                }
                else {
                    viewPager2.setUserInputEnabled(false);
                }
                break;
        }
        return super.onTouchEvent(ev);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM