2010-01-22 11 views
19

Czy można wyróżnić tekst w postaci TextView lub WebView?Zaznacz tekst w TextView lub WebView

widzę, że jest to możliwe w EditText

Highligh text in a EditText

Chciałbym zrobić to samo w TextView lub WebView.
To możliwe?

+0

Sprawdź to również http://stackoverflow.com/questions/6309093/how-to-allow-the-user-to-select-a-text-range- in-a-textview-similar-to-edittext – hassanadnan

+0

prawdopodobny duplikat [Czy możliwe jest posiadanie wielu stylów wewnątrz TextView?] (http://stackoverflow.com/questions/1529068/is-it-possible-to-have -multiple-styles-inside-a-textview) – blahdiblah

+0

Jak to zrobić w widoku webowym? – AnupamChugh

Odpowiedz

56

włączyć Spannable przechowywania TextView! Domyślnie spannable storage in EditText ma wartość true.

tak

TextView myTV = (TextView)findViewById(R.id.textView1); 
String textString = "StackOverFlow Rocks!!!"; 
Spannable spanText = Spannable.Factory.getInstance().newSpannable(textString); 
spanText.setSpan(new BackgroundColorSpan(0xFFFFFF00), 14, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
myTV.setText(spanText); 
+3

Dziękuję, to działa dobrze. Ale myślę, że utworzyć tekst Spannable przez: Spannable spanText = Spannable.Factory.getInstance(). NewSpannable (textString); jest lepszy niż textView.setText() i textView.getText(). – VAdaihiep

+0

Czy istnieje sposób na utworzenie usprawnionego widoku tekstowego, a następnie ustawienie wielu zakresów? –

+0

+ l dla "StackOverFlow Rocks !!!" –

0

Faktycznie, nie trzeba rozwijać tę funkcję przez siebie. Trzeba tylko użyć EditText zamiast TextView, podczas gdy ustawiasz Androida: edytowalny EditText na false.

Moja odpowiedź jest tutaj, mam nadzieję, może pomóc:

https://stackoverflow.com/a/11026292/966405

1

Jak dobrze można użyć tego jedno rozwiązanie dla WebView. Zadzwoń findAllAsync

webview.findAllAsync(((EditText) findViewById(R.id.edit)).getText().toString()); 

niż dodać FindListener do WebView

webview.setFindListener(new FindListener() { 

     @Override 
     public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches, boolean isDoneCounting) { 
      Toast.makeText(getApplicationContext(), "Matches: " + numberOfMatches, Toast.LENGTH_LONG).show(); 
     } 
    }); 

Iterate w związku z webview.findNext(false); gdzie false/true wskazuje kierunek.

Ale to rozwiązanie zostało dodane w API level 16 !!! Zamiast tego możesz skonfigurować JavaScript dla higlihting - http://www.nsftools.com/misc/SearchAndHighlight.htm

Powiązane problemy