我正在使用android上的代码来应用表单,并且在完成表单之前,用户必须接受政策。如果我在TextView
内放一个ScrollView
和一个接受按钮,用户可以在阅读前直接接受。但是我必须强迫用户滚动到底部,然后使“接受”按钮变为启用状态,然后用户接受它,然后继续。首先,我在Dialog Window
内尝试了此操作。它变得越来越复杂。现在,我正在尝试将其添加到另一个活动中。
是否有任何方法可以检测到Scroll View
的位置已结束?
答案 0 :(得分:0)
您可以将canScrollVertically方法与setOnScrollChangeListener一起使用,例如:
scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if (scrollView.canScrollVertically(1)) {
//user can't scroll more in bottom direction
}
}
});
如果可以到达canScrollVertically,则用户位于scrollView的底部,并且无法滚动更多内容。
如果您输入-1
之类的负值,则该方法会检测用户是否可以向上滚动
答案 1 :(得分:0)
您可以通过以下代码进行检测
scrollView.getViewTreeObserver()
.addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener()
{
@Override
public void onScrollChanged() {
if (scrollView.getChildAt(0).getBottom()
<= (scrollView.getHeight() + scrollView.getScrollY())) {
//scroll view is at bottom
} else {
//scroll view is not at bottom
}
}
});
答案 2 :(得分:0)
片段只要为其分配了ID,它们就会自动保存和恢复其视图的状态。 通过分配一个Id(android:id)滚动视图,如果您正在使用Fragment,则为您做魔术(恢复滚动状态)
活动
//保存索引和最高位置 int索引= mList.getFirstVisiblePosition(); 查看v = mList.getChildAt(0); int top =(v == null)吗? 0:(v.getTop()-mList.getPaddingTop());
// ...
//恢复索引和位置 mList.setSelectionFromTop(index,top);