滚动时为什么ScrollView自动顶部?

时间:2014-11-10 13:13:33

标签: android

我的ScrollView

<ScrollView
    android:id="@+id/scrollView8"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bg" >
    <LinearLayout
        android:id="@+id/ListItems"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/btnbge81"
        android:orientation="vertical" >
    </LinearLayout>
</ScrollView>

我在LinearLayout中有大约500个名为“ListItems”的子控件。

为什么向下滚动时ScrollView会自动显示顶部?

1 个答案:

答案 0 :(得分:0)

EditText会滚动ScrollView,以便进入视野。您必须实施onTouchListener。在某个地方有一个答案,但简而言之,这对我有用。您必须清除EditText控件的焦点,以防止它们滚动到视图中。

public class SettingRecord extends Fragment implements OnTouchListener {
    // setup scroll views onresume()
    ScrollView sv = (ScrollView) view.findViewById(R.id.svRecord);
    sv.setOnTouchListener(this);
    sv.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
    sv.setFocusable(true);
    sv.setFocusableInTouchMode(true);
    etName = (EditText) view.findViewById(R.id.etName);

    @Override
    public boolean onTouch(View v, MotionEvent event) {

    @Override
    public boolean onTouch(View v, MotionEvent event) {     
        // fix focus on edit texts scrolling
        if (etName.hasFocus()) {
            etName.clearFocus();
        }
        return false;
    }
}