无法动态切换TextView样式

3
在我的项目中,我需要切换TextView样式到NormalBold。以下是代码示例:
mTitleTextView.setTypeface(mTitleTextView.getTypeface(), letterItem.isRead() ? Typeface.NORMAL : Typeface.BOLD);

TextView 不加粗时,这个方法效果良好。但是当当前状态是加粗时,它无法返回到正常状态。

mTitleTextView.setTypeface(null, letterItem.isRead() ? Typeface.NORMAL : Typeface.BOLD);

上面那行代码解决了问题,但是我使用了定制字体,将当前字体设为null会导致该字体消失。

mTitleTextView.setTypeface(mTitleTextView.getTypeface(),Typeface.NORMAL); 尝试使用 mTitleTextView.invalidate(); - Harish Gyanani
1个回答

1

打字一段时间后,这对我起作用:

textView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        textView.invalidate();
        if(isCliked){
            isCliked = false;
            Typeface face=Typeface.createFromAsset(getAssets(), "test.ttf");
            textView.setTypeface(face,Typeface.NORMAL);
        }
        else{
            Typeface face=Typeface.createFromAsset(getAssets(), "test.ttf");
            textView.setTypeface(face, Typeface.BOLD);
            isCliked = true;
        }
        Log.i("MainActivity", "onClick: "+isCliked);
    }
});

字体类型将保持不变,仅改变粗体和正常。

1
就像我在问题中所说的,将第一个参数设置为null会删除自定义字体。 - Misagh Emamverdi
@MisaghEmamverdi 我更新了我的答案,请查看,我已经尝试过它并且它有效。 - Gujarat Santana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接