我一直在尝试使用BulletSpan创建在其左侧带有项目符号点的字符串列表,但是它不起作用。显示的是字符串列表,但左侧没有项目符号。我进行了相当多的研究,似乎项目符号仅出现在新行之后,因此我在每个字符串前添加了“ \ r \ n”,但这也不起作用。
对于上下文,对象mModule包含一个称为bullets的字符串的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);
任何帮助表示感谢,谢谢:)
答案 0 :(得分:1)
我不熟悉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++)
循环 >
答案 1 :(得分:0)
在textview上设置文本时,请尝试使用以下代码。
代替:
void _getImage(BuildContext context, ImageSource source) {
ImagePicker.pickImage(source: source, maxWidth:
400.0).then((File image) {
_images.insert(
0,
Container(
height: 80,
width: 80,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
image: DecorationImage(
image: FileImage(
image,
),
fit: BoxFit.fill,
),
),
));
setState((){});
});
}
尝试一下
thingsToTv.setText(sb);