Wie kann ich mit einem Android-TextView einen solchen Effekt erzielen? Es sieht irgendwie nach ausgewähltem Text aus und ich konnte nichts Ähnliches in der API finden.
Dies ist keine Hintergrundfarbe für die Ansicht, sondern nur für den Text. Sie können sehen, wie es bei Zeilenumbrüchen stoppt und zwischen den Textzeilen eine dünne weiße Linie aufweist.
Soweit ich sehen kann, gibt es keinen 'schönen' Weg, dies zu tun, ohne TextView zu überschreiben und benutzerdefinierte Farben auf die Ansicht zu zeichnen, die die Lückenfarbe einschließt.
Wenn Sie die Eigenschaft lineSpacingExtra
einstellen, wird nur die Hintergrundfarbe erweitert.
Sie könnten auch in Betracht ziehen, einen benutzerdefinierten spannable
zu erstellen und ihn wie zu verwenden
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);
Dabei ist NewSpannableClass
das benutzerdefinierte spannbare Element.
Da es so viele Leute gibt, die faul sind, nachzuschlagen, wie man eigene spannbare Teile herstellt, hier ein Beispiel
public class CustomSpannable extends ClickableSpan
{
@Override public void updateDrawState(TextPaint ds)
{
super.updateDrawState(ds);
ds.setUnderlineText(true);
}
}
Dieses Beispiel unterstreicht den Text. Verwenden Sie TextPaint
name__, um das Aussehen des überbrückten Textes zu ändern.
<TextView
Android:background="#0000FF"
Android:textColor="#FFFFFF" />
Würde ein TextView
mit blauem Hintergrund und weißem Text definieren ... ist das, was Sie brauchen?
Ich glaube, es gibt eine einfachere und schönere Methode, um dies zu erreichen: Erstellen Sie einfach ein backgroundColorSpan und fügen Sie es einem SpannableString hinzu. Etwas in diese Richtung:
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;
}
Dabei ist "spannableString" das SpannableString-Objekt, das mit "Text" initialisiert wird. "searchString" steht für den Text, den Sie in Ihrer TextView "hervorheben" möchten, und "Farbe" der Hintergrundfarbe, auf die der "hervorgehobene" Text gesetzt werden soll.
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);
Ich denke, das sollte ausreichen.
Vielen Dank
Verwenden Sie dieses Beispiel
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="#0000FF"
Android:textColor="#FFFFFF" />
um Farbe auszuwählen, verwenden Sie diesen Link http://html-color-codes.info/
Rot: # 750A0A
Blau: # 002BFF
Grün: # 33FF00
Weiß: #FFFFFF
Schwarz: # 000000
Wenn Sie dies aus XML heraus tun möchten, versuchen Sie die Lösung der anderen Personen, die gerade geantwortet haben:
<TextView
Android:id="@+id/TextView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:textColor="#ffffff"
Android:background="#1bgtbgt"/>
Wenn Sie es mit dem Aktivitätscode tun möchten, können Sie es dynamisch ändern, indem Sie Folgendes versuchen:
text.setBackgroundColor( int color);
Legen Sie die TextView-Länge einfach als match_parent
fest, vorausgesetzt, sie ist in einem übergeordneten Wert verschachtelt, der sich über die gesamte Bildschirmlänge erstreckt, und Ihr Text wird dieselbe Länge haben, aber das Feld wird auf die gesamte Bildschirmlänge vergrößert.
Versuchen Sie dies unter der textview
in der .xml
-Datei:
<TextView Android:background="#0000FF">