首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓中特定字段后的ScrollView自动滚动

安卓中特定字段后的ScrollView自动滚动
EN

Stack Overflow用户
提问于 2014-06-24 10:59:46
回答 1查看 723关注 0票数 2

这段代码帮助我在单击函数上自动滚动,但是当单击编辑text4时,它只在上面的一个字段上滚动。我想要那个字段转到屏幕的顶部。我使用了向上滚动,滚动,滚动到,所有的一切,但所有的结果是一样的。你能帮帮我吗。

代码语言:javascript
运行
复制
package com.example.scrollview;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.EditText;
import android.widget.ScrollView;


public class MainActivity extends Activity{
EditText edtText4,edtText8;
ScrollView scrollView;
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    scrollView = (ScrollView)findViewById(R.id.scv);

    edtText4 = (EditText)findViewById(R.id.editText4);
    edtText8 = (EditText)findViewById(R.id.editText8);  

    edtText4.setOnTouchListener(selectedFieldTouchListener);
    edtText8.setOnTouchListener(selectedFieldTouchListener);

}
private OnTouchListener selectedFieldTouchListener = new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        int top1 = 0;
        switch (v.getId()) {
        case R.id.editText4:
            top1 = edtText4.getTop();  
            break;
        case R.id.editText8:
            top1 = edtText8.getTop();
            break;
        }
        final int top = top1;
        scrollView.postDelayed(new Runnable() {//must be in postDelayed otherwise wont work

            @Override
            public void run() {
                scrollView.scrollTo(0, edtText4.getTop());
            }
        }, 100);

        return false;
    }
};

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-24 11:05:36

这假定EditTextsScrollView的直接子级。

代码语言:javascript
运行
复制
private OnTouchListener selectedFieldTouchListener = new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int top1 = 0;
            switch (v.getId()) {
            case R.id.editText4:
                top1 = edtText4.getTop();
                break;
            case R.id.editText8:
                top1 = edtText8.getTop();
                break;
            }
            final int top = top1;
            scrollView.postDelayed(new Runnable() {//must be in postDelayed otherwise wont work

                @Override
                public void run() {

                    scrollView.scrollTo(0, top);
                }
            }, 100);

            return false;
        }
    };

然后将Touch Listener添加到您的EditTexts

代码语言:javascript
运行
复制
    edtText4.setOnTouchListener(selectedFieldTouchListener);
    edtText8.setOnTouchListener(selectedFieldTouchListener);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24384889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档