gpt4 book ai didi

android - ScrollView 在 android 中的特定字段后自动滚动

转载 作者:行者123 更新时间:2023-11-29 01:41:28 28 4
gpt4 key购买 nike

此代码帮助我在单击功能上自动滚动,但是当单击编辑文本 4 时,它只会向上滚动上面的一个字段。我希望该字段位于屏幕顶部。我使用了向上滚动、滚动、滚动到,但所有的结果都是一样的。你能帮忙吗。


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;
}
};


最佳答案

这假设 EditTextsScrollView 的直接子级

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

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

关于android - ScrollView 在 android 中的特定字段后自动滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24384889/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com