2012-12-14 5 views
4

개별적인 단어를 클릭 할 수 있도록 링크 이동 방법으로 텍스트 뷰를 사용하는 코드가 있습니다.TextView에서 ClickableSpans를 사용하고 가로로 스크롤 할 수 있습니까?

그러나 실제로 필요한 것은 스크롤링 방식입니다. 그렇게하면 개별 스팬 세그먼트를 더 이상 클릭 할 수 없습니다.

가로 스크롤 (android:scrollHorizontally="true")이 지정 되었더라도 불행하게도 세로 스크롤을 사용합니다.

나는 개별 span 단어에 onClick을 잡는 기능을 유지하는 방법을 알아 내고 수직 스크롤 할 수있게하려고합니다.

두 사람의 장점을 최대한 활용하는 방법에 대한 조언을받을 수 있습니까?

String page = getPage(); 
    textView.setMovementMethod(LinkMovementMethod.getInstance()); 
    textView.setText(page, BufferType.SPANNABLE); 


    Spannable ssPage = (Spannable) textView.getText(); 
    Integer[] indices = getSpaceIndices(textView.getText().toString(), ' '); 

    int start = 0; 
    int end = 0; 
     // to cater last/only word loop will run equal to the length of indices.length 
    for (int i = 0; i <= indices.length; i++) { 
     ClickableSpan clickSpan = new ClickableSpan() { 
      @Override 
      public void onClick(View widget) { 
       TextView tv = (TextView) widget; 
       String s = tv 
         .getText() 
         .subSequence(tv.getSelectionStart(), 
           tv.getSelectionEnd()).toString(); 
       Log.d("called", s); 
       Speak (s); 

       //textView.scrollBy(tv.getWidth(), tv.getHeight()); 
      } 

      public void updateDrawState(TextPaint ds) { 
       super.updateDrawState(ds); 
       ds.setUnderlineText(false); 
      } 
     }; 
     // to cater last/only word 
     end = (i < indices.length ? indices[i] : ssPage.length()); 
     ssPage.setSpan(clickSpan, start, end, 
       Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
     start = end + 1; 
    } 

레이아웃 : ". 필요한 경우 텍스트 버퍼에있는 링크와 스크롤을 통과"

<TextView 
    android:id="@+id/textView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:alpha="245" 
    android:ellipsize="end" 
    android:gravity="top" 
    android:paddingBottom="15dip" 
    android:scrollHorizontally="true" 

    android:scrollbars="horizontal" 
    android:text="@string/hello_world" 
    android:textColorLink="@android:color/black" 
    android:textSize="20dip" 
    tools:context=".ReadActivity" /> 
+0

이해가 안되나요? 수평 또는 수직으로 스크롤하고 있습니까? – wtsang02

+1

가로로 스크롤하도록 구성했지만 링크 이동으로 인해 스크롤을하지 않습니다. 레이아웃이 원래 게시물에 있습니다. – mcollard

답변

-1

LinkMovementMethod 이미 클릭 가능한 링크와 스크롤 할 수있는보기가 모두 필요할 경우 사용할 수 있습니다.

그런 다음이 같은 텍스트 뷰의 레이아웃을 조정해야 :

android:maxLines="3" 
    android:scrollbars="vertical" 

maxLines을 설정하여, 그 후 여분의 라인을 따라서 스크롤 텍스트 뷰의 결과로, 높이를 초과합니다.

관련 문제