Android 富文本加粗与取消加粗的问题

一样是富文本处理的问题,设置一个 Typeface.BOLD 类型的 StyleSpan 可使该块中的文本变为粗体,可是却不能以一样的方法覆盖一个 Typeface.NORMAL 类型来取消这段块的粗体样式,最终仍是只能使用清除块的方式来达到此目的:ide

public class MainActivity extends AppCompatActivity {
    EditText editText1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText1 = findViewById(R.id.editText1);
        SpannableString spannableString = new SpannableString("Hello World!");
        spannableString.setSpan(new StyleSpan(Typeface.BOLD), 0, 3, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

        //这句无效
        //spannableString.setSpan(new StyleSpan(Typeface.NORMAL), 0, 3, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        //这句有效
        spannableString.removeSpan(spannableString.getSpans(0, 3, StyleSpan.class)[0]);

        editText1.setText(spannableString);
    }
}

若是覆盖一个斜体样式到粗体样式上是有效的,可是覆盖这种普通样式却无效,因此至今我仍是没有发现 Typeface.NORMAL 的用途。spa

相关文章
相关标签/搜索