2017-02-05 7 views
1

나는 처음 사용할 때 사용자에게 보여주는 안드로이드 알리미 대화 상자가 있습니다. 이제이 경고 대화 상자의 텍스트가 커서 스크롤이 필요합니다.안드로이드 대화 상자를 닫을 때까지 스크롤하십시오.

나는 사용자가 확인 버튼을 누를 때 그가 텍스트의 끝에 도달 할 때까지, 자체에 의해 을 대화 스크롤을하고 싶습니다.

프로그래밍 방식으로이 문제를 해결하려면 어떻게해야합니까? 예상되는 동작의

의사 코드 :

1 : 두 방법으로이 작업을 수행 할 수

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의 scrollY를 확인할 수 있습니다. 아래쪽을 터치하지 않으면 ScrollView#smoothScrollTo()을 사용하여 아래쪽으로 스크롤 할 수 있습니다.

그게 전부입니다.

어쩌면 같은 뭔가 OnClickListener를 1 편집 번호 :

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

코드를 입력 해주세요 ... 그리고 직접적으로 보지 않고 다음 unviewed 섹션으로 스크롤하고 싶습니다. 라이센스 계약서의 ver bottom..like – SoulRayder

+0

@SoulRayder 원하는대로 코드를 제공했습니다. – AssIstne

+0

감사합니다. @AssIstne. 나는 이미 첫 번째 부분을 완성했다. 내 대화 상자는 여러 textviews의 레이아웃을 가지고 있기 때문에 텍스트 뷰 대신에 상대적인 레이아웃을 취하기 위해이 코드를 수정해야했습니다. 또한, * 대화 상자가 생성 된 후이 [answer] (http://stackoverflow.com/questions/)에서와 같이 버튼을 직접 참조하여이 작업을 수행함으로써 onclicklistener 비헤이비어를 * 대체 *해야합니다. 2620444/how-to-prevent-a-dialog-from-click-when-a-button-is-click) 에릭으로. 핵심적인 논리 주셔서 감사합니다 :) – SoulRayder

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

관련 문제