Я пытаюсь добавить текст и изображение в TextView, используя Html.fromHtml(), но он не работает.
Получение строки из ресурсов и вызов Html.fromHtml():
String insertedText = "<img src=\"small_image\"/>";
String strText = getResources().getString(R.string.big_string, insertedText);
myTextView.setText(Html.fromHtml(strText, context, null));
Где контекст - это активность, которая также реализует ImageGetter. Это функция getDrawable:
public Drawable getDrawable(String source) {
int id = 0;
Drawable drawable = null;
if(source.equals("small_image")){
id = R.drawable.small_image;
}
if (id > 0) {
drawable = getResources().getDrawable(id);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
}
return drawable;
}
В файле strings.xml в значениях у меня есть:
<string name="big_string">"Big String %1$s"</string>
У меня есть small_image.png в выпадающей папке, и во время отладки я вижу, что этот идентификатор получает правильное значение, а затем битмап загружается в возвращаемую переменную, но он по-прежнему отображает прямоугольник с "obj", написанным на нем.
Любая идея, почему это так?
Я также попытался использовать SpannableStringBuilder и добавить интервал изображения, который заменил бы "пробел" из моего текста, но это тоже не сработало.
Я нашел проблему с моим кодом. Все, что я написал в вопросе, является правильным, и вы можете использовать его в качестве ссылки для включения изображений в TextViews.
Проблема заключалась в том, что я использовал атрибут:
android:textAllCaps="true"
В xml файле и что-то помешало показу изображения.
String name = modelDispatchReportList.get(position).getName(); //get name from model class typed List
String text = "<font color='#000000'>" + name + "</font>"; //change color of name
/* check version of API to call method of Html class because fromHtml method is deprecated
* */
if (android.os.Build.VERSION.SDK_INT <= android.os.Build.VERSION_CODES.N) {
Log.d(TAG, "onBindViewHolder: if");
holder.textViewName.setText("12345" + " "); //set text to textView
holder.textViewName.append(Html.fromHtml(text)); //append text to textView
} else {
Log.d(TAG, "onBindViewHolder: else");
holder.textViewName.setText("12345" + " "); //set text to textView
holder.textViewName.append(Html.fromHtml(text, 0)); ////append text to textView
}
Просто измените Textview
на WebView
и настройте контент в WebView
ну, я пробовал ваш код, он работает...
Кстати, я использовал deafult ic_lancher drawable...
Я просто устанавливаю textview в setContentView
.
Я думаю, это макет текста или проблема с возможностью рисования?
не могли бы вы рассказать мне больше?
getDrawable()
а drawable не нулевой, я не понимаю, почему ...
Вы не можете установить изображение на textview по html.
ImageGetter
?
TextView
.