2013-03-23 16 views
13

Jak mogę osiągnąć taki efekt dzięki Androidowi TextView. Wygląda jak wybrany tekst i nie mogłem znaleźć czegoś podobnego w API.Tekstowy kolor tła tekstu w Androidzie

To nie jest kolor tła dla widoku, ale kolor tła tylko dla tekstu. Możesz zobaczyć, jak zatrzymuje się na linii podziału i ma cienką białą linię między liniami tekstu.

Screenshot

+0

Hi Ole, masz rozwiązany to pytanie? Chciałbym również potrzebują takiego samego zachowania – alfdev

+0

Możliwa duplikat [TextView z kolorem tła i odstępy między wierszami] (https://stackoverflow.com/questions/22939862/textview-with-background-color-and-line-spacing) –

Odpowiedz

4

O ile widzę, że nie ma 'miły' sposób to zrobić bez nadpisywania TextView i rysowania niestandardowych farb na widoku, który zawiera kolor luki.

Nawet ustawienie właściwości lineSpacingExtra powoduje jedynie rozwinięcie koloru tła.

Można też zajrzeć do tworzenia potencjalnie zwyczaj spannable i używać go jak

Spannable str = new SpannableStringBuilder("How can I achieve such an effect with an Android TextView. It looks somehow like selected text and I couldn't find something similar in the API."); 
str.setSpan(new NewSpannableClass(), 0, str.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
((TextView)findViewById(R.id.text)).setText(str); 

Gdzie NewSpannableClass jest zwyczaj spannable.

Widząc, jak wiele ludzie są leniwi, żeby patrzeć, jak zrobić własne spannables, oto przykład

public class CustomSpannable extends ClickableSpan 
{ 
    @Override public void updateDrawState(TextPaint ds) 
    { 
     super.updateDrawState(ds); 
     ds.setUnderlineText(true); 
    } 
} 

Ten przykład podkreślić tekst. Użyj TextPaint, aby zmienić wygląd łączonego tekstu.

+0

Ya, jesteś prawdą. właściwość lineSpacingExtra tylko rozwija kolor tła. ktoś ma rozwiązanie tego? – NaiveBz

+2

Chciałbym zobaczyć pełny kod, proszę. Odpowiedź została zaakceptowana, ale nie dostać „NewSpannableClass” – Bobbelinio

+1

byłbym zainteresowany widząc, że pełny kod zbyt. – eoinzy

14
<TextView 
android:background="#0000FF" 
android:textColor="#FFFFFF" /> 

Czy zdefiniować TextView z niebieskim tłem i białym tekstem ... czy to, co trzeba?

+0

Niezupełnie . Zmieniłem to pytanie, aby było bardziej szczegółowe. –

1

korzystania z tego przykładu

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#0000FF" 
    android:textColor="#FFFFFF" /> 

do pobierania koloru użyć tego linku http://html-color-codes.info/

Czerwony: # 750A0A

niebieski: # 002BFF

Zielony: # 33FF00

bieli: #FFFFFF

Czarny: # 000000

+1

dlaczego nie http://www.colorpicker.com/ .. – Zyoo

+0

dobry wybór dzięki ..... – XEENA

+0

te odpowiedzi będą pomocne –

-1

Spróbuj użyć tego tekstu kolorem tła

<TextView 
      android:id="@+id/comment_dis" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:text="Stack Overflow 
      android:textColor="#ffffff" 
      android:background="#3cabdc"/> 
0

Spróbuj poniżej textview w .xml pliku:

<TextView android:background="#0000FF"> 
-1

Można dodać inny układ wokół TextView i ustawić jego tło na kolor chcesz

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#000000" > 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:textColor="#FFFFFF" 
     android:text="@string/text" /> 

</LinearLayout> 
1

Jeśli chcesz to zrobić z XML wypróbuj rozwiązania innych osób, które właśnie odpowiedziały:

<TextView 
      android:id="@+id/TextView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:textColor="#ffffff" 
      android:background="#1bgtbgt"/> 

Jeśli chcesz zrobić to z Kodeksu aktywny można go zmienić dynamicznie jak spróbować z:

text.setBackgroundColor(int color); 
3

wierzę, jest łatwiejszy, bardziej przyjemny sposób, aby przejść o osiągnięcie tego celu: po prostu stworzyć backgroundColorSpan i dodać go do SpannableString . Coś wzdłuż tych linii:

public static SpannableString buildBackgroundColorSpan(SpannableString spannableString, 
               String text, String searchString, int color) { 

    int indexOf = text.toUpperCase().indexOf(searchString.toUpperCase()); 

    try { 
     spannableString.setSpan(new BackgroundColorSpan(color), indexOf, 
       (indexOf + searchString.length()), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    } catch (Exception e) { 

    } 


    return spannableString; 
} 

Gdzie „spannableString” jest obiektem SpannableString tworzone i zakłada się, że zainicjowane z „tekst”; "searchString" reprezentuje fragment tekstu, który chcesz "podświetlić" w swoim TextView, i "koloruj" kolor tła, na który powinien zostać ustawiony "podświetlony" tekst.

String text = "The Quick Brown Fox Jumps over the Lazy Dog"; 
String searchString = "brown"; 
int color = Color.parseColor("#FFF5F19E"); 

SpannableString spannableString = new SpannableString(text); 
spannableString = StringUtils.buildBackgroundColorSpan(spannableString, text, searchString, color); 

Myślę, że to powinno wystarczyć.

Dzięki

0

Wystarczy ustawić długość TextView jak match_parent zakładając, że jest zagnieżdżony w wartości nadrzędnej, która rozciąga się na całej długości ekranu, a tekst będzie tej samej długości, ale pole wzrośnie do cała długość ekranu.

Powiązane problemy