2012-02-22 19 views
14

Próbuję uzyskać EditText, aby wyczyścić jego zakresy, dzwoniąc pod numer EditText.getText().clearSpans(). Jednakże, jeśli zadzwonię do tej metody, EditText zacznie zachowywać się dziwnie, z liniowymi kanałami pojawiającymi się jako pola i dowolne przęsła, które następnie ustawię będąc w zupełnie niewłaściwym miejscu.Android Edittext- Clearing Spans

Moje pytanie brzmi: Jak wyczyścić przęsła i edytować tekst? (Bez wywoływania setText() - tekst może mieć tysiące linii i jest zbyt powolny, aby przerysować go wszystkie często)

Dziękuję bardzo!

Odpowiedz

34

Miał ten sam problem. Rozwiązałem go, usuwając tylko typy przęseł, które dodałem do EditText. Chyba clearSpans usuwa więcej, niż powinien. Zrobiłem coś takiego dla każdego z używanych zakresów:

toRemoveSpans = et.getSpans(0, et.getText().length(), ForegroundColorSpan.class); 
for (int i = 0; i < toRemoveSpans.length; i++) 
    et.removeSpan(toRemoveSpans[i]); 
+1

Dzięki Andre. Właściwie udało mi się go rozwiązać wcześniej (przepraszam, że po prostu zapomniałem odpowiedzieć na to pytanie!), Ale dzięki za ogłoszenie odpowiedzi - jestem pewien, że skorzysta na tym ktoś inny. –

+1

Rzeczywiście, ktoś to zrobił. Dzięki! – Carni