我setTypeface
用来设置文本粗体(或斜体,或其他字体属性)
TextView tv = findViewById(R.id.label);
...
tv.setTypeface(null,Typeface.BOLD);
...
如何仅删除粗体属性,而不更改迄今为止可能已设置的其他属性?
tv.setTypeface(null,Typeface.NORMAL);
这会将样式设置为正常,而不会更改颜色或大小。
但是您不能以这种方式混合粗体/斜体/下划线文本。如果您指定 BOLD,则所有文本都将是粗体。如果你想混合文本的样式我建议使用 HTML 来设置文本的样式,然后使用下面的代码。
tv.setText(Html.fromHtml(yourStringAsHtml));
只需创建一个新的字体可以使bold
回normal
tv.setTypeface(Typeface.create(tv.getTypeface(), Typeface.NORMAL), Typeface.NORMAL);
tv.invalidate();
像我一样,如果您想保留设置为 TextView 的自定义字体并删除 BOLD 属性,您可以尝试
tv.getPaint().setFakeBoldText(false)
执行以下操作删除了我设置为 TextView 的自定义字体。
tv.setTypeface(null,Typeface.NORMAL);
这段代码删除了旧的字体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)
);
}