사용자가 특정 키워드를 검색 할 수있는 검색 화면이 있고 해당 키워드가 강조 표시되어야하는 애플리케이션을 개발 중입니다. 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);
이것은 Spannable String을 사용하여 달성 할 수 있습니다. 다음을 가져와야합니다.
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);