滚动到表单元素

4

我有一个表单,有很多字段,当我按下“提交”按钮时,我希望滚动视图跳转到未回答字段所在的位置。除了scrollto(x,y)之外,是否还有其他方法可以实现这个功能,或者这些坐标必须始终映射到表单的元素上(类似于(form element).getCoordinates())?

谢谢


小安,为什么你不使用scrollto(x,y)呢?我认为那是最简单的方法。 - 100rabh
这就是问题所在,我该如何获取一个单选按钮的(x,y)坐标? - xain
那么,你可以使用http://developer.android.com/reference/android/view/View.html#getHeight()将每个视图的宽度和高度存储在一个容器中(最好是ArrayList),以便获取要滚动到的位置。 - 100rabh
这里提到的方法有没有对你起作用? - 100rabh
2个回答

6
这应该可以工作 -
view.setFocusableInTouchMode(true);
view.requestFocus();
view.requestRectangleOnScreen(viewRectangle);

你可以查看View类。
附:未回答的字段将被选中,但我不确定如果它在屏幕外部,Activity是否会滚动到请求的位置。

调用view.requestFocusFromTouch()实际上会将焦点放在视图上,并使屏幕滚动到该视图。 - Hoang Tran

2

ScrollView有预定义的方法scrollTo()scrollBy()可以实现此功能。

我认为您在获取坐标方面存在问题。因此,我建议使用View.getHeight方法存储每个占用垂直空间的视图的高度,并将高度存储在Map集合中。 以下是我尝试的代码片段

    scrollView.post(new Runnable() {
                 public void run() {
               Integer emailTextViewHeight = (Integer)hashMap.get("EmailTextViewHeight");
            scrollView.scrollBy(0, emailTextViewHeight);//scrolls to emailTextView
                 }
             });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接