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

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

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

 textview.setTextAppearance(); 

但它不起作用。

我通过创build一个新的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> 

然后,在我的代码中,我创build了一个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); 

像乔纳森build议的,使用textView.setTextTypeface作品,我刚刚在几秒钟之前在一个应用程序中使用它。

 textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc. 
 TextView tvCompany = (TextView)findViewById(R.layout.tvCompany); tvCompany.setTypeface(null,Typeface.BOLD); 

你从代码中设置它。 字体

我发现textView.setTypeface(Typeface.DEFAULT_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:devise时间

您也可以使用XML进行设置:

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

希望这会有所帮助

Summved

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

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

根据你想要设置的风格,你必须使用不同的方法。 TextAppearance的东西有它自己的setter,TypeFace有它自己的setter,背景有它自己的setter等等

试试这一行代码。

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

在这里,它将从这个文本视图中获取当前的字体,并使用新的字体replace它。 这里的新字体是DEFAULT_BOLD但你可以应用更多。