ScrollView回到顶部

时间:2015-04-30 21:48:51

标签: android android-edittext scrollview ontouchevent motionevent

所以我的scrollView只有一个视图(EditText),我想实现

dispatchTouchEvent(MotionEvent me)
 View current_view = Processor.findViewGroupWithPoint(
            (int) me.getRawX(), (int) me.getRawY(), rmodel.layout.parent);
    if (current_view instanceof ScrollView) {


        switch( me.getAction() ){
        case MotionEvent.ACTION_DOWN:
            Log.d(TAG, " down");

            ((ScrollView) findViewById(111111)).fullScroll(View.FOCUS_DOWN);

            break;
        case MotionEvent.ACTION_UP:
            Log.d(TAG, " up");
((ScrollView) findViewById(111111)).fullScroll(View.FOCUS_UP);
            break;
        }

}

我的问题是,当我向下滚动时,它可以正常工作,但我必须将手指放在屏幕上,就像我将其移除一样,它将返回到scrollView的顶部。

1 个答案:

答案 0 :(得分:1)

据我所知,当你放手时它会转到scrollView的顶部,因为你告诉它。你说

case MotionEvent.ACTION_UP:
    Log.d(TAG, " up");
    ((ScrollView) findViewById(111111)).fullScroll(View.FOCUS_UP);

MotionEvent.ACTION_UP用于检测手指被释放的时间,所以当它被释放时,你会告诉它到达顶部

((ScrollView) findViewById(111111)).fullScroll(View.FOCUS_UP);

要解决此问题,您真正需要做的就是删除该行...

修改

我写了这个,它应该工作,可能需要一些调整。

boolean bottom = false;

基本上这里只创建一个名为bottom的布尔值并将其设置为false ^^

case MotionEvent.ACTION_DOWN:
    Log.d(TAG, " down");

    if (bottom = false){
        ((ScrollView) findViewById(111111)).fullScroll(View.FOCUS_DOWN);
    }else{
        ((ScrollView) findViewById(111111)).fullScroll(View.FOCUS_UP);
    }
    break;
}

这只是看看ScrollView是在底部还是现在......希望它有效!