我有一个很长的带有滚动视图的活动。它是一个包含用户必须填写的各种字段的表单。我在表单的中间有一个复选框,当用户选中它时,我想滚动到视图的特定部分。是否有办法以编程方式滚动到EditText对象(或任何其他视图对象)?
此外,我知道这是可能的使用X和Y坐标,但我想避免这样做,因为形式可能会从用户到用户的变化。
我有一个很长的带有滚动视图的活动。它是一个包含用户必须填写的各种字段的表单。我在表单的中间有一个复选框,当用户选中它时,我想滚动到视图的特定部分。是否有办法以编程方式滚动到EditText对象(或任何其他视图对象)?
此外,我知道这是可能的使用X和Y坐标,但我想避免这样做,因为形式可能会从用户到用户的变化。
当前回答
问:有没有一种方法,以编程方式滚动滚动视图到特定的编辑文本?
答:嵌套滚动视图在recyclerview最后位置添加记录数据。
adapter.notifyDataSetChanged();
nested_scroll.setScrollY(more Detail Recycler.getBottom());
是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
其他回答
private final void focusOnView(){
yourScrollView.post(new Runnable() {
@Override
public void run() {
yourScrollView.scrollTo(0, yourEditText.getBottom());
}
});
}
问:有没有一种方法,以编程方式滚动滚动视图到特定的编辑文本?
答:嵌套滚动视图在recyclerview最后位置添加记录数据。
adapter.notifyDataSetChanged();
nested_scroll.setScrollY(more Detail Recycler.getBottom());
是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
参考资料:https://stackoverflow.com/a/6438240/2624806
接下来的工作要好得多。
mObservableScrollView.post(new Runnable() {
public void run() {
mObservableScrollView.fullScroll([View_FOCUS][1]);
}
});
在我看来,滚动到给定矩形的最好方法是通过视图。requestRectangleOnScreen(矩形、布尔值)。你应该在你想要滚动到的视图上调用它,并传递一个你想要在屏幕上可见的局部矩形。第二个参数在平滑滚动时为假,在即时滚动时为真。
final Rect rect = new Rect(0, 0, view.getWidth(), view.getHeight());
view.requestRectangleOnScreen(rect, false);
以下是我正在使用的:
int amountToScroll = viewToShow.getBottom() - scrollView.getHeight() + ((LinearLayout.LayoutParams) viewToShow.getLayoutParams()).bottomMargin;
// Check to see if scrolling is necessary to show the view
if (amountToScroll > 0){
scrollView.smoothScrollTo(0, amountToScroll);
}
这将获得显示视图底部所需的滚动量,包括视图底部的任何边距。