是否可以使用字符串参数方法将Image插入TextView?

时间:2016-06-14 03:33:31

标签: android spannablestring spannable

正如我们在https://stackoverflow.com/a/10144094/3286489中看到的,我们可以通过%1 $ d等在String参数中添加参数。但我不知道如何在那里添加图像。

我们可以使用spannable在https://stackoverflow.com/a/3177667/3286489中看到我们的String中添加图像。但是文本中图像的位置需要明确说明。

所以我的问题是,有没有一种方法可以将我们的图像插入TextView(我可以使用spannable),使用参数化方法https://stackoverflow.com/a/10144094/3286489

2 个答案:

答案 0 :(得分:1)

以下是我以前做过的事情:

例如。你的字符串可能是:“这是[img]”。

找到“[img]”的位置,并将其替换为ImageSpan

编辑:正则表达式可能类似于

String message = "This is an [img]";
Pattern MY_PATTERN = Pattern.compile("\\[img\\]");
Matcher matcher = MY_PATTERN.matcher(message);
// Check all occurrences
while (matcher.find()) {
    System.out.print("Start index: " + matcher.start());
    System.out.print(" End index: " + matcher.end());
}

答案 1 :(得分:0)

  1. string.xml

    <string name="var">Image %1$s and %2$s</string>
    
  2. MainActivity.java

    TextView textView = (TextView) findViewById(R.id.text);
    String v1 = "%1$s";
    String v2 = "%2$s";
    String test = getString(R.string.var, v1, v2);
    
    Spannable span = Spannable.Factory.getInstance().newSpannable(test);
    
    span.setSpan(new ImageSpan(getBaseContext(), android.R.drawable.star_on),
            test.indexOf(v1), test.indexOf(v1) + v1.length(),
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    
    span.setSpan(new ImageSpan(getBaseContext(), android.R.drawable.star_on),
            test.indexOf(v2), test.indexOf(v2) + v2.length(),
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    
    textView.setText(span);