问题:当ScrollView中的子控件长度发生变化时,ScrollView会自动滑动,需要禁掉
解决方法:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true">
......
</LinearLayout>
</ScrollView>
在ScrollView中的LinearLayout加入:
android:focusable="true"
android:focusableInTouchMode="true"
将焦点给LinearLayout,当子控件长度发生变化时Scrollview就不会自动滑动.
如果上面方法不能解决,就需要重写ScrollView:
复写computeScrollDeltaToGetChildRectOnScreen返回0,导入Rect类即可
public class NoAutoSlideScrollView extends ScrollView {
public NoAutoSlideScrollView(Context context) {
super(context);
}
public NoAutoSlideScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NoAutoSlideScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {
return 0;
}
}