如何在Android的特定点之外删除editText粗体跨度?

时间:2019-07-20 06:17:20

标签: android android-edittext spannablestring

我正在使用文本编辑器。我想在单击按钮时使文本变为粗体和普通(非粗体)。按下粗体按钮后,每个下一个键入的文本都将变为粗体,但是一旦取消选中粗体按钮,我将无法使每个下一个键入的文本正常。

editText.getText().setSpan(boldSpan, start, end, Spanned.SPAN_INCLUSIVE_INCLUSIVE);

此行使每个下一个键入的文本加粗。取消粗体按钮后,我想立即将文本设置为正常。

我尝试过的事情:

我已经尝试在即将到来的文本上设置Typeface.NORMAL,但这并不会删除boldSpan。

我尝试删除跨度的结尾部分,但这会删除整个跨度,因此最后根本没有加粗的文本。

我已经尝试了好几天,尝试了不同的方法,但是没有一个起作用。任何使我完成工作的方法都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

检查下面的代码是否对您有帮助。您可以在此处使用editText代替字符串;)

String normalBefore= "First Part Not Bold ";
String normalBOLD=  "BOLD ";
String normalAfter= "rest not bold";
String finalString= normalBefore+normalBOLD+normalAfter;
Spannable sb = new SpannableString( finalString );
sb.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), finalString.indexOf(normalBOLD)+ normalBOLD.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //bold
sb.setSpan(new AbsoluteSizeSpan(intSize), finalString.indexOf(normalBOLD)+ normalBOLD.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);