[android] 여러 개의 컬러 텍스트가있는 단일 TextView

제목에서 알 수 있듯이 단일 textview 요소에서 두 가지 다른 색상의 문자를 얻을 수 있다는 것을 알고 싶습니다.



답변

당신이를 포맷하는 경우 예, String함께 htmlfont-color특성 다음 방법에 전달Html.fromHtml(your text here)

String text = "<font color=#cc0029>First Color</font> <font color=#ffcc00>Second Color</font>";
yourtextview.setText(Html.fromHtml(text));


답변

다음과 같이 HTML없이 여러 색상으로 선을 인쇄 할 수 있습니다.

TextView textView = (TextView) findViewById(R.id.mytextview01);
Spannable word = new SpannableString("Your message");        

word.setSpan(new ForegroundColorSpan(Color.BLUE), 0, word.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

textView.setText(word);
Spannable wordTwo = new SpannableString("Your new message");        

wordTwo.setSpan(new ForegroundColorSpan(Color.RED), 0, wordTwo.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.append(wordTwo);


답변

Spannable효과를 적용 하는 데 사용할 수 있습니다 TextView.

다음은 TextView텍스트 의 첫 부분만을 색칠하는 예제입니다 (HTML 예제와 같이 문자열을 하드 코딩하는 대신 색상을 동적으로 설정할 수 있습니다!)

    mTextView.setText("Red text is here", BufferType.SPANNABLE);
    Spannable span = (Spannable) mTextView.getText();
    span.setSpan(new ForegroundColorSpan(0xFFFF0000), 0, "Red".length(),
             Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

이 예에서는 0xFFFF0000을 getResources().getColor(R.color.red)


답변

나는 이렇게했다 :

참조 확인

문자열색상전달 하여 텍스트 색상설정하십시오 .

private String getColoredSpanned(String text, String color) {
    String input = "<font color=" + color + ">" + text + "</font>";
    return input;
}

아래 코드를 호출 하여 TextView / Button / EditText 등에 텍스트설정하십시오 .

TextView :

TextView txtView = (TextView)findViewById(R.id.txtView);

컬러 문자열 가져 오기 :

String name = getColoredSpanned("Hiren", "#800000");
String surName = getColoredSpanned("Patel","#000080");

색상이 다른 두 문자열의 TextView에서 텍스트를 설정하십시오.

txtView.setText(Html.fromHtml(name+" "+surName));

끝난


답변

SpannableStringBuilder 사용

SpannableStringBuilder builder = new SpannableStringBuilder();

SpannableString str1= new SpannableString("Text1");
str1.setSpan(new ForegroundColorSpan(Color.RED), 0, str1.length(), 0);
builder.append(str1);

SpannableString str2= new SpannableString(appMode.toString());
str2.setSpan(new ForegroundColorSpan(Color.GREEN), 0, str2.length(), 0);
builder.append(str2);

TextView tv = (TextView) view.findViewById(android.R.id.text1);
tv.setText( builder, TextView.BufferType.SPANNABLE);


답변

이봐, 난 이걸 해봤 어

TextView textView=(TextView)findViewById(R.id.yourTextView);//init

//here I am appending two string into my textView with two diff colors.
//I have done from fragment so I used here getActivity(), 
//If you are trying it from Activity then pass className.this or this; 

textView.append(TextViewUtils.getColoredString(getString(R.string.preString),ContextCompat.getColor(getActivity(),R.color.firstColor)));
textView.append(TextViewUtils.getColoredString(getString(R.string.postString),ContextCompat.getColor(getActivity(),R.color.secondColor)));

TextViewUtils 클래스 안에이 메소드를 추가하십시오.

 /***
 *
 * @param mString this will setup to your textView
 * @param colorId  text will fill with this color.
 * @return string with color, it will append to textView.
 */
public static Spannable getColoredString(String mString, int colorId) {
    Spannable spannable = new SpannableString(mString);
    spannable.setSpan(new ForegroundColorSpan(colorId), 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    Log.d(TAG,spannable.toString());
    return spannable;
}


답변

다음과 같이 문자열 파일에서 문자열을 사용하는 것이 좋습니다.

    <string name="some_text">
<![CDATA[
normal color <font color=\'#06a7eb\'>special color</font>]]>
    </string>

용법:

textView.text=HtmlCompat.fromHtml(getString(R.string.some_text), HtmlCompat.FROM_HTML_MODE_LEGACY)