it-swarm.com.de

Hervorheben der Textfarbe mit Html.fromHtml () in Android?

Ich entwickle eine Anwendung, in der es einen Suchbildschirm gibt, in dem der Benutzer nach bestimmten Schlüsselwörtern suchen kann und dieses Schlüsselwort hervorgehoben werden sollte. Ich habe Html.fromHtml-Methode gefunden.

Aber ich werde gerne wissen, ob es die richtige Art ist, es zu tun oder nicht.

Bitte teilen Sie mir Ihre Meinung dazu mit.

79
sunil

Oder viel einfacher als die manuelle Bearbeitung von Spannables, da Sie nicht gesagt haben, dass der Hintergrund hervorgehoben werden soll, sondern nur der Text:

String styledText = "This is <font color='red'>simple</font>.";
textView.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE);
189
Christopher Orr

Verwenden des Farbwerts aus der XML-Ressource:

int labelColor = getResources().getColor(R.color.label_color);
String сolorString = String.format("%X", labelColor).substring(2); // !!strip alpha value!!

Html.fromHtml(String.format("<font color=\"#%s\">text</font>", сolorString), TextView.BufferType.SPANNABLE); 
34
SergeyA

Dies kann mit einer Spannbaren Schnur erreicht werden. Sie müssen Folgendes importieren

import Android.text.SpannableString; 
import Android.text.style.BackgroundColorSpan; 
import Android.text.style.StyleSpan;

Und dann können Sie den Hintergrund des Texts folgendermaßen ändern:

TextView text = (TextView) findViewById(R.id.text_login);
text.setText("");
text.append("Add all your funky text in here");
Spannable sText = (Spannable) text.getText();
sText.setSpan(new BackgroundColorSpan(Color.RED), 1, 4, 0);

Wobei dies die Charaktere auf Position 1 - 4 mit einer roten Farbe hervorhebt. Hoffe das hilft!

12
stealthcopter

Alternative Lösung: Verwenden Sie stattdessen ein WebView. HTML ist einfach zu handhaben.

WebView webview = new WebView(this);

String summary = "<html><body>Sorry, <span style=\"background: red;\">Madonna</span> gave no results</body></html>";

webview.loadData(summary, "text/html", "utf-8");
4
Vidar Vestnes
 String name = modelOrderList.get(position).getName();   //get name from List
    String text = "<font color='#000000'>" + name + "</font>"; //set Black color of name
    /* check API version, according to version call method of Html class  */
    if (Android.os.Build.VERSION.SDK_INT < Android.os.Build.VERSION_CODES.N) {
        Log.d(TAG, "onBindViewHolder: if");
        holder.textViewName.setText(context.getString(R.string._5687982) + " ");
        holder.textViewName.append(Html.fromHtml(text));
    } else {
        Log.d(TAG, "onBindViewHolder: else");
        holder.textViewName.setText("123456" + " ");   //set text 
        holder.textViewName.append(Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY));   //append text into textView
    }
4
Khyati Fatania

schrift ist veraltet, stattdessen Span verwenden Html.fromHtml("<span style=color:red>"+content+"</span>")

1
mhdtouban
textview.setText(Html.fromHtml("<font color='rgb'>"+text contain+"</font>"));

Es gibt der Farbe genau das, was Sie im HTML-Editor gemacht haben. Legen Sie einfach die Textansicht fest und verknüpfen Sie sie mit dem Wert für die Textansicht. Android unterstützt keine Bereichsfarbe, ändern Sie sie in die Schriftfarbe im Editor und Sie können loslegen.

0
Naina

Damit ein Teil Ihres Textes unterstrichen und farbig wird

in deiner strings.xml

<string name="text_with_colored_underline">put the text here and &lt;u>&lt;font color="#your_hexa_color">the underlined colored part here&lt;font>&lt;u></string>

dann in der Aktivität

yourTextView.setText(Html.fromHtml(getString(R.string.text_with_colored_underline)));

und für anklickbare Links:

<string name="text_with_link"><![CDATA[<p>text before link<a href=\"http://www.google.com\">title of link</a>.<p>]]></string>

und in Ihrer Tätigkeit:

yourTextView.setText(Html.fromHtml(getString(R.string.text_with_link)));
yourTextView.setMovementMethod(LinkMovementMethod.getInstance());
0
bsma