如何在运行时更改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
但你可以应用更多。