java - 将自定义 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
我怎样才能正确地投射它?
解决方案
问题是我在 xml 中使用了普通的 ScrollView 而不是 <exampleapplication.CustomScrollView>。更换它解决了我的问题。
推荐阅读
- arrays - 递归展平多维数组
- python - 如何删除熊猫数据框中的特殊字符
- mapbox - 在 MapBox 中请求功能详细信息
- python - matplotlib中如何根据y轴范围填充颜色的渐变
- c - Valgrind 报告分析:条件跳转或移动取决于未初始化的值
- c - 在 for 循环之后没有 {} 大括号 for (i=0; s[i]>='0' && s[i] <= '9'; ++i)
- dialogflow-es - Dialogflow api突然开始返回CORS错误
- mysql - 在 select 语句中使用视图
- java - Java - 如何让 ObjectInputStream 从文件中读取所有对象
- python - Python-通过常量列标题排列不同行的CSV文件