개별적인 단어를 클릭 할 수 있도록 링크 이동 방법으로 텍스트 뷰를 사용하는 코드가 있습니다.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" />
이해가 안되나요? 수평 또는 수직으로 스크롤하고 있습니까? – wtsang02
가로로 스크롤하도록 구성했지만 링크 이동으로 인해 스크롤을하지 않습니다. 레이아웃이 원래 게시물에 있습니다. – mcollard