ユーザーが特定のキーワードを検索できる検索画面があり、そのキーワードを強調表示するアプリケーションを開発しています。Html.fromHtmlメソッドを見つけました。
しかし、それが適切な方法であるかどうかを知りたいと思います。
これについてのあなたの見解を教えてください。
ユーザーが特定のキーワードを検索できる検索画面があり、そのキーワードを強調表示するアプリケーションを開発しています。Html.fromHtmlメソッドを見つけました。
しかし、それが適切な方法であるかどうかを知りたいと思います。
これについてのあなたの見解を教えてください。
回答:
または、Spannable
sを手動で処理するよりもはるかに簡単です。背景を強調表示する必要はなく、テキストだけを表示するためです。
String styledText = "This is <font color='red'>simple</font>.";
textView.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE);
<span style="color:#ff0000;">
、Androidが色を変更しないように色を返します。
xmlリソースからの色の値の使用:
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);
これは、スパン可能な文字列を使用して実現できます。以下をインポートする必要があります
import android.text.SpannableString;
import android.text.style.BackgroundColorSpan;
import android.text.style.StyleSpan;
そして、次のようなものを使用して、テキストの背景を変更できます。
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);
これにより、位置1〜4の文字が赤い色で強調表示されます。お役に立てれば!
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
}
代替ソリューション:代わりにWebViewを使用します。HTMLは操作が簡単です。
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");
テキストの一部に下線と色を付けるには
あなたのstrings.xmlで
<string name="text_with_colored_underline">put the text here and <u><font color="#your_hexa_color">the underlined colored part here<font><u></string>
その後、活動で
yourTextView.setText(Html.fromHtml(getString(R.string.text_with_colored_underline)));
およびクリック可能なリンクの場合:
<string name="text_with_link"><![CDATA[<p>text before link<a href=\"http://www.google.com\">title of link</a>.<p>]]></string>
そしてあなたの活動において:
yourTextView.setText(Html.fromHtml(getString(R.string.text_with_link)));
yourTextView.setMovementMethod(LinkMovementMethod.getInstance());
最初に文字列をHTMLに変換してから、スパン可能に変換します。次のコードを提案するようにしてください。
Spannable spannable = new SpannableString(Html.fromHtml(labelText));
spannable.setSpan(new ForegroundColorSpan(Color.parseColor(color)), spannable.toString().indexOf("•"), spannable.toString().lastIndexOf("•") + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);