Programing

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

crosscheck 2020. 8. 23. 08:20
반응형

런타임에 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: Design Time

You can set in XML as well:

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

Hope this will help

Summved


i found textView.setTypeface(Typeface.DEFAULT_BOLD); to be the simplest method.


try this line of code.

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

here , it will get current Typeface from this textview and replace it using new Typeface. New typeface here is DEFAULT_BOLD but you can apply many more.


See doco for setText() in TextView http://developer.android.com/reference/android/widget/TextView.html

To style your strings, attach android.text.style.* objects to a SpannableString, or see the Available Resource Types documentation for an example of setting formatted text in the XML resource file.


Depending on which style you want to set, you have to use different methods. TextAppearance stuff has its own setter, TypeFace has its own setter, background has its own setter, etc.

참고URL : https://stackoverflow.com/questions/4630440/how-to-change-a-textviews-style-at-runtime

반응형