Wiem, że to takie proste (doh ...), ale szukam sposobu na uruchomienie metody dotykania lub klikania wiersza tekstu TextView w aplikacji na Androida.
Ciągle myślę o detektorach przycisków i anonimowych wywołaniach detektora metod, ale wydaje się, że nie dotyczy to TextView.
Czy ktoś może wskazać mi fragment kodu, aby pokazać, w jaki sposób kliknięcie lub stuknięcie fragmentu tekstu w TextView uruchamia metodę?
TextView
- link.medium.com/TLq6s8ltc3Odpowiedzi:
Możesz ustawić moduł obsługi kliknięć w xml za pomocą tych atrybutów:
Nie zapomnij klikalnego atrybutu, bez niego moduł obsługi kliknięć nie jest wywoływany.
main.xml
MyActivity.java
źródło
setOnClickListener
ustawiaclickable
atrybut, ale użycieonClick
atrybutu najwyraźniej nie.onClick
że ustawiaclickable
atrybut w Androidzie 5.0 Lollipop (API 21). Może uważali za błąd, że nie zdarzyło się to w starszych wersjach?Może to nie do końca to, czego szukasz, ale właśnie to zadziałało w tym, co robię. Wszystko to po moim
onCreate
:źródło
OK Odpowiedziałem na własne pytanie (ale czy to najlepszy sposób?)
Oto jak uruchomić metodę po kliknięciu lub stuknięciu tekstu w TextView:
a mój plik main.xml to:
źródło
od wewnątrz działania, które wywołuje układ i widok tekstu, ten detektor kliknięć działa:
widok tekstu jest zadeklarowany w ten sposób (domyślny kreator):
oraz w pliku strings.xml
źródło
Chociaż możesz rozwiązać problem, ustawiając detektor na widok tekstu, zaleca się, aby tego nie robić. Powinieneś użyć płaskiego przycisku, ponieważ jest on podklasą przycisku i zapewnia wiele atrybutów, których TextView nie ma.
Aby użyć płaskiego przycisku, dodaj
style="?android:attr/borderlessButtonStyle"
atrybut -źródło
w textView
Musisz także zaimplementować View.OnClickListener, aw metodzie On Click można użyć zamiaru
Testowałem, że to rozwiązanie działa dobrze.
źródło
Aby kliknąć fragment tekstu (nie cały
TextView
), możesz użyćHtml
lubLinkify
(oba tworzą linki otwierające adresy URL, ale nie oddzwanianie w aplikacji).Linkify
Użyj zasobu ciągów, takiego jak:
Następnie w widoku tekstu:
Html
Używanie
Html.fromHtml
:Następnie w widoku tekstu:
źródło
Możesz użyć TextWatcher dla TextView, jest bardziej elastyczny niż ClickLinstener (nie najlepszy lub gorszy, tylko więcej jeden sposób).
źródło