[java] 런타임에 TextView의 스타일을 변경하는 방법

사용자가을 탭 TextView하면 정의 된 스타일을 적용하고 싶은 Android 앱 이 있습니다.

A를 찾으려고 textview.setStyle()했지만 존재하지 않습니다. 나는 시도했다

textview.setTextAppearance();

하지만 작동하지 않습니다.



답변

res/values/style.xml다음과 같이 새 XML 파일 을 생성하여이를 수행했습니다 .

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="boldText">
        <item name="android:textStyle">bold|italic</item>
        <item name="android:textColor">#FFFFFF</item>
    </style>

    <style name="normalText">
        <item name="android:textStyle">normal</item>
        <item name="android:textColor">#C0C0C0</item>
    </style>

</resources>

또한 다음과 같은 “strings.xml”파일에 항목이 있습니다.

<color name="highlightedTextViewColor">#000088</color>
<color name="normalTextViewColor">#000044</color>

그런 다음 내 코드에서 해당 TextView에서 탭 이벤트를 트랩하기 위해 ClickListener를 만들었습니다.
편집 :
API 23에서 ‘setTextAppearance’는 더 이상 사용되지 않습니다.

    myTextView.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view){
                    //highlight the TextView
                    //myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
    if (Build.VERSION.SDK_INT < 23) {
       myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
    } else {
       myTextView.setTextAppearance(R.style.boldText);
    }
     myTextView.setBackgroundResource(R.color.highlightedTextViewColor);
                }
            });

다시 변경하려면 다음을 사용합니다.

if (Build.VERSION.SDK_INT < 23) {
    myTextView.setTextAppearance(getApplicationContext(), R.style.normalText);
} else{
   myTextView.setTextAppearance(R.style.normalText);
}
myTextView.setBackgroundResource(R.color.normalTextViewColor);


답변

Jonathan이 제안한 것처럼 textView.setTextTypeface작품을 사용하여 몇 초 전에 앱에서 사용했습니다.

textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc.


답변

TextView tvCompany = (TextView)findViewById(R.layout.tvCompany);
tvCompany.setTypeface(null,Typeface.BOLD);

당신은 코드에서 그것을 설정합니다. 서체


답변

프로그래밍 방식 : 런타임

setTypeface ()를 사용하여 프로그래밍 방식으로 수행 할 수 있습니다.

textView.setTypeface(null, Typeface.NORMAL);      // for Normal Text
textView.setTypeface(null, Typeface.BOLD);        // for Bold only
textView.setTypeface(null, Typeface.ITALIC);      // for Italic
textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic

XML : 디자인 타임

XML에서도 설정할 수 있습니다.

android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"

이것이 도움이되기를 바랍니다.

요약


답변

나는 textView.setTypeface(Typeface.DEFAULT_BOLD);가장 간단한 방법이라는 것을 알았다 .


답변

이 코드 줄을 시도하십시오.

textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);

여기서는이 textview에서 현재 Typeface를 가져 와서 새로운 Typeface를 사용하여 대체합니다. 여기에 새로운 서체가 DEFAULT_BOLD있지만 더 많이 적용 할 수 있습니다.


답변

TextView http://developer.android.com/reference/android/widget/TextView.html 에서 setText ()에 대한 doco를 참조
하십시오.

문자열의 스타일을 지정하려면 android.text.style. * 객체를 SpannableString에 연결하거나 사용 가능한 리소스 유형 문서에서 XML 리소스 파일에서 형식이 지정된 텍스트를 설정하는 예를 참조하세요.