将一个android对话框滚动到结束然后解除它

时间:2017-02-05 05:51:57

标签: android android-alertdialog android-scroll

我有一个Android警报对话框,我第一次使用时会向用户显示。现在,此警报对话框中的文本很大,因此需要滚动。

当用户按下OK按钮直到他到达文本末尾时,我想让对话框自行滚动

如何以编程方式进行此操作?

预期行为的伪代码:

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
    }
});

2 个答案:

答案 0 :(得分:1)

你可以用两种方式完成这项工作:

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

2:你自己应该以编程方式滚动滚动条到它的结尾,在完成对话框之后,你可以使用scrollbar.smoothScrollTo(x,y)方法滚动滚动条。像这样:

private void scrollFurther()
{
     ScrollView sv= (ScrollView) findViewById(R.id.scv_main);
     sv.smoothScrollTo(sv.getBottom());
     dismissDialogue();
}

答案 1 :(得分:1)

  1. 首先,您应该将ScrollView添加到对话框中。
  2. 因为对话框的原生按钮总是会关闭你不想要的对话框,所以你也需要自己添加按钮。
  3. 当用户单击您添加的按钮时,您可以检查ScrollView的scrollY,如果它没有触及底部,您可以使用ScrollView#smoothScrollTo()将其滚动到底部。
  4. 就是这样。

    编辑#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();
    }