Nice programing

Android에서 Html.fromHtml ()을 사용하여 텍스트 색상 강조?

nicepro 2020. 10. 8. 19:00
반응형

Android에서 Html.fromHtml ()을 사용하여 텍스트 색상 강조?


사용자가 특정 키워드를 검색 할 수있는 검색 화면이 있고 해당 키워드가 강조 표시되어야하는 애플리케이션을 개발 중입니다. Html.fromHtml 메서드를 찾았습니다.

그러나 나는 그것이 그것을하는 적절한 방법인지 아닌지 알고 싶습니다.

이에 대한 귀하의 견해를 알려주십시오.


또는 Spannables를 수동으로 처리하는 것보다 훨씬 간단 합니다. 배경을 강조 표시하지 않고 텍스트 만 강조하기 때문입니다.

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

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의 문자를 빨간색으로 강조 표시합니다. 도움이 되었기를 바랍니다!


대체 솔루션 : 대신 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");

 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
    }

글꼴은 더 ​​이상 사용되지 않습니다. 대신 스팬을 사용하십시오. Html.fromHtml("<span style=color:red>"+content+"</span>")


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

html 편집기에서 만든 것과 정확히 일치하는 색상을 제공하고 textview를 설정하고 textview 값과 연결하면됩니다. Android는 스팬 색상을 지원하지 않으며 편집기에서 글꼴 색상으로 변경하면 모든 설정이 완료됩니다.


텍스트의 일부에 밑줄과 색을 칠하려면

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>

다음 활동에서

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());

참고 URL : https://stackoverflow.com/questions/2730706/highlighting-text-color-using-html-fromhtml-in-android

반응형