从textview中删除Bold而不更改其他属性

时间:2013-06-23 13:29:14

标签: java android textview

我使用setTypeface设置文本粗体(或斜体或其他字体属性)

TextView tv = findViewById(R.id.label);
...
tv.setTypeface(null,Typeface.BOLD);
...

如何在不更改到目前为止设置的其他属性的情况下,仅删除粗体属性?

4 个答案:

答案 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();