我有一个Android应用程序,当用户点击TextView
时,我想应用一个已定义的样式。
我想找一个textview.setStyle()
,但它不存在。我试过了
textview.setTextAppearance();
但它不起作用。
答案 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等。