我有一个Android警报对话框,我在第一次使用时向用户显示。现在,此警报对话框中的文本很大,因此需要滚动。
我想在用户按下确定按钮时使对话框自行滚动,直到他到达文本末尾。
如何以编程方式执行此操作?
预期行为的伪代码:
alert.setPositiveButton("Let's Get Started!!",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(scrolled_till_end)
dismissDialogue();
else
scrollFurther(); // scroll_further to next unviewed part of dialog
}
});
- 首先,您应该在对话框中添加滚动视图。
- 由于对话框的本机按钮将始终关闭您不需要的对话框,因此您也需要自己添加按钮。
- 当用户点击您添加的按钮时,您可以检查 ScrollView 的滚动 Y,如果没有触及底部,您可以使用
ScrollView#smoothScrollTo()
将其滚动到底部。
就是这样。
编辑 #1在onClickListener中,可能是这样的:
int textTotalHeight = textView.getHeight();
int pageHeight = scrollView.getHeight();
int scrollY = scrollView.getScrollY();
if(scrollY < textTotalHeight - pageHeight) {// not touch the bottom
scrollView.smoothScrollTo(0, scrollY + pageHeight);// scroll one page height
} else {// touch the bottom, dismiss the dialog
dialog.dismiss();
}
您可以通过两种方式完成这项工作:
1:禁用提交按钮并强制用户滚动滚动条以启用它...然后,在该用户滚动到目标末尾滚动条后,启用提交按钮并允许用户使用该按钮。
2:自己应该以编程方式滚动滚动到它的末尾,完成后完成对话框,您可以使用scrollbar.smoothScrollTo(x,y(方法滚动滚动条。 像这样:
private void scrollFurther()
{
ScrollView sv= (ScrollView) findViewById(R.id.scv_main);
sv.smoothScrollTo(sv.getBottom());
dismissDialogue();
}