Возможно ли вставить Image в TextView, используя строковый аргумент?

Как мы видим на /questions/45409656/vozmozhnyi-li-parametryi-v-stringsxml/45409739#45409739, мы могли бы добавить аргументы в наш параметр String через%1$d и т. Д. Но я не знаю, как добавить туда изображение.

Мы могли бы добавить изображение к нашей строке, как мы видим в /questions/15225095/spannablestring-s-primerom-izobrazheniya/15225096#15225096 используя spannable. Но положение изображения в тексте должно быть четко указано.

Итак, мой вопрос, есть ли способ, где мы могли бы вставить наше изображение в TextView (я в порядке, используя spannable), используя параметризованный подход как /questions/45409656/vozmozhnyi-li-parametryi-v-stringsxml/45409739#45409739?

2 ответа

Вот что я сделал раньше:

например. ваша строка может быть: "Это [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. 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);
    
Другие вопросы по тегам