我使用setTypeface
设置文本粗体(或斜体或其他字体属性)
TextView tv = findViewById(R.id.label);
...
tv.setTypeface(null,Typeface.BOLD);
...
如何在不更改到目前为止设置的其他属性的情况下,仅删除粗体属性?
答案 0 :(得分:14)
tv.setTypeface(null,Typeface.NORMAL);
这样可以在不改变颜色或大小的情况下将样式恢复正常。
但是你不能用这种方式混合粗体/斜体/下划线文字。如果指定BOLD,则所有文本都将为粗体。如果你想混合我建议使用HTML来设置文本样式的文本样式,然后使用以下代码。
tv.setText(Html.fromHtml(yourStringAsHtml));
答案 1 :(得分:1)
这段代码删除了旧的字体 setTypeface(null,Typeface.NORMAL);
为了保持旧态,你应该致电
setTextViewStyle(textView,isBold);
private void setTextViewStyle(TextView view, boolean isBold){
if (view == null)
return;
// if old typeface is null create new Typeface bold or def
Typeface oldTypeface = view.getTypeface() != null ? view.getTypeface() :
(isBold ? Typeface.DEFAULT_BOLD : Typeface.DEFAULT);
view.setTypeface(
Typeface.create(oldTypeface, isBold ? Typeface.BOLD : Typeface.NORMAL)
);
}
答案 2 :(得分:0)
像我一样,如果您想保留已设置为TextView的自定义字体并删除BOLD属性,可以尝试
tv.getPaint().setFakeBoldText(false)
下面的操作删除了我为TextView设置的自定义字体。
tv.setTypeface(null,Typeface.NORMAL);
答案 3 :(得分:0)
只需创建一个新的字样,就可以使bold
返回到normal
tv.setTypeface(Typeface.create(tv.getTypeface(), Typeface.NORMAL), Typeface.NORMAL);
tv.invalidate();