首页 > 解决方案 > 将自定义 ScrollView 投射到 ScrollView

问题描述

我有一个看起来像这样的自定义滚动视图:

public class PagerScrollView extends ScrollView {

    float touchX = 0;
    float touchY = 0;

    ViewPager parentPager;

    public void setParentPager(ViewPager parentPager) {
        this.parentPager = parentPager;
    }

    public PagerScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public PagerScrollView(Context context) {
        super(context);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        switch (ev.getActionMasked()) {
            case MotionEvent.ACTION_DOWN:
                touchX = ev.getX();
                touchY = ev.getY();
                return super.onTouchEvent(ev);
            case MotionEvent.ACTION_MOVE:
                if (Math.abs(touchX-ev.getX()) < 40) {
                    return super.onTouchEvent(ev);
                } else {
                    if (parentPager == null) {
                        return false;
                    } else {
                        return parentPager.onTouchEvent(ev);
                    }
                }
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_UP:
                touchX = 0;
                touchY = 0;
                break;
        }

        return super.onTouchEvent(ev);
    }
}

在 xml 中,我将它包裹在 ViewPager 和 TabLayout 周围(也许这是错误?)。当我尝试使用分配它时

PagerScrollView pagerScrollView = rootView.findViewById(R.id.pager_scroll_view);

我得到:

android.widget.ScrollView cannot be cast to exampleapplication.PagerScrollView

我怎样才能正确地投射它?

标签: javaandroidscrollview

解决方案


问题是我在 xml 中使用了普通的 ScrollView 而不是 <exampleapplication.CustomScrollView>。更换它解决了我的问题。


推荐阅读