BulletSpan未添加项目符号

时间:2018-12-27 18:00:21

标签: android

我一直在尝试使用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);

任何帮助表示感谢,谢谢:)

2 个答案:

答案 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);