如何在运行时更改文本视图的样式
我有一个Android应用程序,当用户点击一个时,我想应用一个定义的样式。TextView
我想找一个,但它不存在。我试过了textview.setStyle()
textview.setTextAppearance();
但它不起作用。
我有一个Android应用程序,当用户点击一个时,我想应用一个定义的样式。TextView
我想找一个,但它不存在。我试过了textview.setStyle()
textview.setTextAppearance();
但它不起作用。
我通过创建一个新的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>
我的“字符串.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);
就像乔纳森建议的那样,使用作品,我几秒钟前刚刚在应用程序中使用它。textView.setTextTypeface
textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc.