我自定义ScrollView
作为View
的主要layout
,其中包含一个FrameLayout
,其他View
都放在里面它。它看起来像这样(这是sm_layout.xml):
<com.effeleven.utils.CustomScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scrollView"
android:background="@color/white"
android:clickable="true">
<FrameLayout...>
</com.effeleven.utils.CustomScrollView>
当我使用默认的Android ScrollView
时,我没有抛出此异常。现在我需要一个自定义的,因为我需要处理ScrollView
内的滚动事件(我有mapFragment
和ListView
,我不能用任何东西替换,因为我关注设计模式)。什么可能导致异常,因为我的CustomScrollView
只包含一个FrameLayout,就像之前的ScrollView
一样?
这是我的CustomScrollView
课程:
public class CustomScrollView extends ScrollView {
public CustomScrollView(Context context) {
super(context);
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater.inflate(R.layout.sm_layout, this, true);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
switch (action)
{
case MotionEvent.ACTION_DOWN:
super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_MOVE:
return false;
case MotionEvent.ACTION_CANCEL:
super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_UP:
return false;
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
super.onTouchEvent(ev);
return true;
}
}
答案 0 :(得分:3)
在 CustomScrollView 中,您使用LayoutInflater包含另一个布局,这会导致问题。尝试评论布局并查看它是否有效。
答案 1 :(得分:3)
阅读 ScrollView
允许放置在其中的视图层次结构的视图组 滚动。滚动视图可能只有一个直接子项放在其中
<强>原因强>
layoutInflater.inflate(R.layout.sm_layout, this, true);
您已将多个xml属性包含为ScrollView的子项。你持有 sm_layout.xml 。你应该从Class 中删除它。