问题:当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;
}
}
本文介绍了如何防止ScrollView在其子控件长度变化时自动滚动。通过设置LinearLayout的焦点属性或重写ScrollView的computeScrollDeltaToGetChildRectOnScreen方法,可以有效避免此问题。
8890

被折叠的 条评论
为什么被折叠?



