Возможно ли вставить 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());
}
string.xml
<string name="var">Image %1$s and %2$s</string>
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);