如何在运行时更改TextView的样式

时间:2011-01-07 21:24:15

标签: java android textview

我有一个Android应用程序,当用户点击TextView时,我想应用一个已定义的样式。

我想找一个textview.setStyle(),但它不存在。我试过了

textview.setTextAppearance();

但它不起作用。

8 个答案:

答案 0 :(得分:141)

我是通过创建一个新的XML文件res/values/style.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>

然后,在我的代码中,我创建了一个ClickListener来捕获该TextView上的tap事件: 修改 从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);

答案 1 :(得分:90)

就像Jonathan建议的那样,使用textView.setTextTypeface作品时,我几秒钟就在应用程序中使用过它。

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

答案 2 :(得分:12)

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

你是从代码中设置的。 Typeface

答案 3 :(得分:4)

以编程方式:运行时间

您可以使用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"

希望这会有所帮助

Summved

答案 4 :(得分:2)

我发现textView.setTypeface(Typeface.DEFAULT_BOLD);是最简单的方法。

答案 5 :(得分:1)

尝试这行代码。

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

这里,它将从此textview获取当前的Typeface并使用新的Typeface替换它。这里的新字体是DEFAULT_BOLD,但您可以申请更多。

答案 6 :(得分:0)

在TextView中查看doco的setText() http://developer.android.com/reference/android/widget/TextView.html

  

要设置字符串样式,请将android.text.style。*对象附加到SpannableString,或者参阅可用资源类型文档以获取在XML资源文件中设置格式化文本的示例。

答案 7 :(得分:0)

根据您要设置的样式,您必须使用不同的方法。 TextAppearance的东西有自己的setter,TypeFace有自己的setter,后台有自己的setter等。