使 android 对话框滚动到最后再关闭它

Making an android dialog scroll till the end before dismissing it

我有一个 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
    }
});

您可以通过两种方式完成这项工作:

1:禁用提交按钮并强制用户滚动滚动条以启用它...然后在用户滚动到目标滚动条的末尾后启用提交按钮并允许用户使用该按钮。

2:您应该以编程方式将滚动条滚动到它的末尾,然后完成对话框,您可以使用 scrollbar.smoothScrollTo(x,y) 方法滚动滚动条。像这样:

private void scrollFurther()
{
     ScrollView sv= (ScrollView) findViewById(R.id.scv_main);
     sv.smoothScrollTo(sv.getBottom());
     dismissDialogue();
}
  1. 首先你应该在对话框中添加一个 ScrollView。
  2. 由于对话框的原生按钮总是会关闭你不想要的对话框,所以你也需要自己添加按钮。
  3. 当用户点击你添加的按钮时,你可以检查ScrollView的scrollY,如果它没有触及底部你可以使用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();
}