Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 第一个固定盘没有';行不通_Android_Spannablestring - Fatal编程技术网

Android 第一个固定盘没有';行不通

Android 第一个固定盘没有';行不通,android,spannablestring,Android,Spannablestring,我想使文本和类型加粗。但只有粗体字 我错过了什么?根据文档: setSpan(对象内容、int开始、int结束、int标志) 将指定的标记对象附加到文本的开始…结束区域,或者如果对象已附加到其他位置,则将其移动到该区域 StyleSpan只能在Spannable中使用一次。您需要为每个文本创建一个StyleSpan,并且类型您应该像下面这样创建对象 final StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD); final

我想使
文本
类型
加粗。但只有粗体字


我错过了什么?

根据文档:

setSpan(对象内容、int开始、int结束、int标志)
将指定的标记对象附加到文本的开始…结束区域,或者如果对象已附加到其他位置,则将其移动到该区域


StyleSpan
只能在
Spannable
中使用一次。您需要为每个
文本
创建一个StyleSpan,并且
类型

您应该像下面这样创建对象

final StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD);
final SpannableString ss = new SpannableString("How to " + text + " in " + type);
ss.setSpan(bss, 7, text.length() + 7, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
ss.setSpan(bss, 7 + text.length() + 4, ss.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(ss);

更好的解决方案是使用静态方法,而不是创建多个对象:

ss.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 7, text.length() + 7, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
ss.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 7 + text.length() + 4, ss.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(ss)

我花了一个多小时试图弄清楚为什么每次我添加了几个以上的样式时,我的样式就消失了,直到我发现它删除了第一个样式,并将其粘贴到该特定外观的最后一个外观。仅供参考:文档的这一部分仅显示在
Spannable
类中,而不显示该类的子类,这几乎不可能理解。很好地解决了这个问题,但代表Google删除/不创建继承文档的类的工作并不太好。。。至于为什么我不能多次重复使用外观,我不知道……大概是因为样式对象的标识被用作查找跨度边界的关键;请参见,例如,
span#getSpanStart(对象标记)
。文档应该让这一点更加清晰。只是因为我认为如果重复使用样式对象,
get
可能无法工作,所以我猜测情况就是这样,并找到了这个答案进行确认。
CharacterStyle.wrap(CharacterStyle c)