2017-02-05 8 views
1

У меня есть диалоговое окно предупреждения 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 
    } 
}); 

ответ

1
  1. первую очередь вы должны добавить Scrollview в диалоговое окно.
  2. как родная кнопка диалога всегда будет отклонять диалоговое окно, которое вы не хотите, поэтому вам тоже нужно добавить кнопку.
  3. , когда пользователь нажимает кнопку, которую вы добавили, вы можете проверить прокрутку ScrollView, если она не касается нижней части, вы можете использовать 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(); 
} 
+0

Просьба представить код для этого ... и, кроме того, я хотел бы перейти к следующему не просмотренному разделу, а не непосредственно к ver bottom..like в лицензионном соглашении – SoulRayder

+0

@SoulRayder Предоставили какой-то код, как вы хотите. – AssIstne

+0

Спасибо @AssIstne. Я уже сделал первую часть. Мне пришлось изменить этот код, чтобы взять относительный макет вместо textview, поскольку в моем диалоговом окне есть макет нескольких текстовых просмотров. Кроме того, * после * диалог создается и отображается, нам нужно * переопределить * поведение onclicklistener, обратившись к кнопке напрямую, чтобы, наконец, выполнить эту работу, как в этом [ответе] (http://stackoverflow.com/questions/ 2620444/how-to-prevent-a-dialog-from-clos-when-a-button-is-clicked) от eric. Спасибо за основную логику, хотя :) – SoulRayder

1

вы можете сделать эту работу в два пути:

1: отключить кнопку отправить и силы пользователя для прокрутки полосы прокрутки, чтобы включить его ... то после этого пользователь прокручивается до конца полосы прокрутки цели, активирует кнопку отправки и позволяет пользователю использовать эту кнопку.

2: Вы должны прокручивать полосу прокрутки программно до конца и после этого завершить диалоговое окно, вы можете прокручивать полосу прокрутки с помощью метода scrollbar.smoothScrollTo (x, y). как это:

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

Второй вариант был бы один я ищу .... но как бы я отслеживать * scrolled_till_end * флаг, как описано выше? – SoulRayder

+0

Я верю, что вы можете найти свой ответ по этой ссылке: http://stackoverflow.com/a/10334353/3137633 – Morteza

 Смежные вопросы

  • Нет связанных вопросов^_^