나는 textView와 ListView를 가지고있다. 사용자가 ListView의 요소를 클릭하면 textView에 요소가 추가됩니다. TV에서 이러한 문자열을 분리하고 싶습니다. 사용자가 TextView에서 지정된 문자열을 클릭하면 TV에서 해당 요소를 제거하려고합니다. SpannableString이 필요하다고 생각하지만 서로 분리 할 수는 없습니다. 나는 요소들에 대해 다른 행동을 취할 수 없다는 것을 의미한다.동일한 textView에서 분리 된 범위를 설정하는 방법은 무엇입니까?
답변
당신이 이미 가지고있는 경우 SpannableString
의 당신이 그 (것)들을 TextUtils
를 사용하여 concat
에 시도 할 수 있습니다 :
TextUtils.concat(span1, span2);
그리고 당신은 setSpan
방법을 사용할 수 있습니다 스팬을 만들기;
setSpan (플래그를 int로, 무엇을, INT 시작, INT 끝을 객체)
예는 ClickableSpan
당신이 할 수 만들기 위해 :
SpannableString styledString = new SpannableString(Text);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
}
};
styledString.setSpan(clickableSpan, 0, Text.length(), 0);
PS : 당신이 기억 Spannable String에 여러 span을 설정할 수 있습니다. 한 span의 끝이 다음 span의 시작 부분과 겹치지 않도록주의하십시오.
예를 들어 6 스팬이있을 때 두 번째 스팬에서 작업을 수행하려면 어떻게해야합니까? –
예, 위에서 언급 한 것처럼 원하는만큼 많은 SpannableString을 가질 수 있습니다. setSpan을 사용하여 여러 문자열을 동일한 문자열로 설정할 수도 있습니다. 각 스팬은 다음과 같이 작성됩니다. setSpan (Object what, int start, int end, int flags) 클릭 할 수있는 텍스트의 부분과 일반 텍스트의 부분을 설정할 수 있습니다. –
[여러 span을 설정하는 방법 같은 부분 텍스트에 TextView의 텍스트?] (http://stackoverflow.com/questions/14981307/how-to-set-multiple-spans-on-a-textviews-text-on-the-same-partial-text) – Okas