android - BulletSpan 不添加项目符号
问题描述
我一直在尝试使用 BulletSpan 创建一个带有项目符号点的字符串列表,但它不起作用。正在显示字符串列表,但左侧没有项目符号。我进行了相当多的研究,似乎项目符号只出现在新行之后,所以我在每个字符串之前添加了“\r\n”,但这也不起作用。
对于上下文,对象 mModule 包含称为项目符号的字符串 RealmList,我正在尝试将项目符号指向的字符串组设置为“thingsToTv”。
StringBuilder sb = new StringBuilder();
for(int i = 0; i < mModule.getBullets().size(); i++){
String stringB = "\r\n" + mModule.getBullets().get(i);
SpannableString string = new SpannableString(stringB);
string.setSpan(new BulletSpan(), 0, stringB.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
Log.d(TAG, "String: " + string);
sb.append(stringB);
}
thingsToTv.setText(sb);
非常感谢任何帮助,谢谢:)
解决方案
我不熟悉,RealmList
但如果它像一个ArrayList
那么你可以试试这个:
SpannableString spanString;
private void testSpanBullet(){
String sep = System.lineSeparator();
ArrayList<String> list = new ArrayList<>();
list.add("Test 1");
list.add("Test 2");
list.add("Test 3");
list.add("Test 4");
StringBuilder sb = new StringBuilder();
for(String s : list){
sb.append(sep + s);
}
String concat = sb.toString();
spanString = new SpannableString(concat);
for(String s : list){
addBullet(s, concat);
}
textView.setText(spanString);
}
private void addBullet(String s, String txt){
int index = txt.indexOf(s);
// You can change the attributes as you need ... I just added a bit of color and formating
BulletSpan bullet = new BulletSpan(20, Color.RED);
spanString.setSpan(bullet, index, index+1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
注意:
这仅在您的值RealmList
是唯一的情况下才有效。
此外,如果RealmList
不允许,foreach
那么您将需要for
像在代码中那样执行循环for(int i = 0; i < mModule.getBullets().size(); i++)
推荐阅读
- c++ - C++中unique_lock和shared_lock有什么区别
- c++ - 关于未解析的外部符号的 pbrt 问题
- google-docs - 在谷歌文档中获取准确的字符索引,而不管呈现的页面数量
- php - 这种奇怪的浮点格式是如何出现的,无论是点还是逗号?
- apache-flink - 我应该如何将 Apache-flink 流数据下沉到 Druid 中?
- python - 如何使用函数将数字列表乘以 2?(Python)
- xamarin.forms - 组合框控件 Xamarin 表单
- rust - 尝试在方法中进行线程连接
- unit-testing - 如果代码具有“sortBy”方法对列表项进行排序,则无法获得代码覆盖率
- javascript - Angular 中的切换按钮