2012-04-02 5 views
5

Chcę zrobić kilka części tekstu indywidualnie klikalny na przykład w poniższym tekście:Android Clickable TextView Jak zrobić wiele regionów Kliknij na tekst i złapać Region Selection

Get pogoda forcast jeden dzień, dwa dni, siedem dzień.

Chcę mieć możliwość kliknięcia pojedynczo trzech różnych regionów tekstu, aby uzyskać jeden dzień, dwa dni lub siedem dni. Nie chcę tego, aby uzyskać URL strony internetowej, ale wystarczy kliknąć obszar tekstu wewnątrz działania, które pokazuje TextView.

+0

możliwe duplikat (http://stackoverflow.com/questions/9584136/how-to-click-or-tap-on tekst-tekst-na-różnych-słowach) – ForceMagic

Odpowiedz

12

Powinieneś być w stanie to osiągnąć, używając ClickableSpan. Zasadniczo musisz utworzyć SpannableStringBuilder, dołączyć części tekstowe i ustawić inną ClickableSpan dla każdej klikalnej części tekstowej.

SpannableStringBuilder sb = new SpannableStringBuilder(); 
String regularText = "This text is "; 
String clickableText = "clickable"; 
sb.append(regularText); 
sb.append(clickableText); 
sb.setSpan(new ClickableSpan(), sb.length()-clickableText.length(), sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
TextView tv = ... 
tv.setText(sb); 

Jest to tylko przykład ilustrujący, jak ustawić pojedynczy ClickableSpan. Oczywiście będzie to miało więcej sensu, aby zrobić powyżej w pętli i ustawić nową rozpiętość w każdej iteracji.

Ponieważ jednak klasa ClickableSpan jest klasą abstrakcyjną, należy ją najpierw rozszerzyć o własną konkretną implementację. Dokładniej, metoda onClick musi zostać zaimplementowana, aby obsługiwać zdarzenia kliknięcia.

Ponadto, nie zapomnij ustawić metody MovementMethod w TextView, np. LinkMovementMethod [? Jak kliknij lub dotknij tekstu TextView na różnych słów]

tv.setMovementMethod(LinkMovementMethod.getInstance());