android - ScrollView 回到顶部

标签 android android-edittext scrollview touch-event motionevent

所以我有一个只有一个 View 的 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 的顶部。

最佳答案

据我所知,当您放手时它会到达 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 的 bool 值并将其设置为 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 是在底部还是现在...希望它有效!

关于android - ScrollView 回到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29978409/

相关文章:

java - BitmapFactory.decodeByteArray() 在二值化位图上返回 null

android - Android 中 EditText 的最大宽度

Android 水平滚动条正在剪切文本

ios - 在 pushViewController 之后重置 ScrollView contentOffset

android - 为什么 `SmsMessage.createFromPdu` 返回一个数组?

android - 如果 debuggable=false,为什么 React-Native Android 发布版本会崩溃?

android - 如何使用数据库开发android软键盘示例

带图标/按钮的 Android EditText

具有文本密码输入类型的Android EditText不会通过双击选择所有字符

c++ - 创建自定义可缩放 slider - 过程