Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 7

изображения в Strings.xml

07.05.2019, 16:33. Показов 1116. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Как можно добавить изображение в текст добавляемый в Strings.xml?

Я пробовал прописать
XML
1
2
3
<string name"тематекста">
Мой текст <img src="название_изображения"/> текст продолжается
</string>
не помогло.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2019, 16:33
Ответы с готовыми решениями:

Константы из strings.xml привести к String
Метод setText() класса TextView. Первым он всегда принимает строковые значения (проверено тремя часами поиска ошибок в одной строке). Мне...

Ссылка на strings.xml в TextView.setText() не преобразуется в String
Всем привет! Возникла проблема с методом setText() для TextView. Есть код: &lt;string name = &quot;points&quot;&gt;Points: &lt;/string&gt; ...

Как добавить в массив все элементы <string> из strings.xml ?
Нужно добавить в строковый массив все элементы &lt;string&gt; из .xml файла со строками, как это сделать?

11
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
07.05.2019, 16:38
Никак.
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 7
07.05.2019, 16:45  [ТС]
ExFau$t, неужели нет никакого способа добавить изображение между текстом?

Добавлено через 4 минуты
Я видел следующий код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
import android.content.Context;
import android.text.Spannable;
import android.text.style.ImageSpan;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.TextView;
 
public class TextViewWithImages extends TextView {
 
    public TextViewWithImages(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    public TextViewWithImages(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public TextViewWithImages(Context context) {
        super(context);
    }
    @Override
    public void setText(CharSequence text, BufferType type) {
        Spannable s = getTextWithImages(getContext(), text);
        super.setText(s, BufferType.SPANNABLE);
    }
 
    private static final Spannable.Factory spannableFactory = Spannable.Factory.getInstance();
 
    private static boolean addImages(Context context, Spannable spannable) {
        Pattern refImg = Pattern.compile("\\Q[img src=\\E([a-zA-Z0-9_]+?)\\Q/]\\E");
        boolean hasChanges = false;
 
        Matcher matcher = refImg.matcher(spannable);
    while (matcher.find()) {
        boolean set = true;
        for (ImageSpan span : spannable.getSpans(matcher.start(), matcher.end(), ImageSpan.class)) {
            if (spannable.getSpanStart(span) >= matcher.start()
             && spannable.getSpanEnd(span) <= matcher.end()
               ) {
                spannable.removeSpan(span);
            } else {
                set = false;
                break;
            }
        }
        String resname = spannable.subSequence(matcher.start(1), matcher.end(1)).toString().trim();
        int id = context.getResources().getIdentifier(resname, "drawable", context.getPackageName());
        if (set) {
            hasChanges = true;
            spannable.setSpan(  new ImageSpan(context, id),
                                matcher.start(),
                                matcher.end(),
                                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
                             );
        }
    }
 
        return hasChanges;
    }
    private static Spannable getTextWithImages(Context context, CharSequence text) {
        Spannable spannable = spannableFactory.newSpannable(text);
        addImages(context, spannable);
        return spannable;
    }
}
По этому коду можно добавить изображение в strings.xml через
XML
1
[img src=название_изображения/]
Но при тесте в Java, некоторые библиотеки не работают. Я так полагаю они устарели или еще что.
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
07.05.2019, 16:49
Ну не через текстовый ресурс же. Есть чудесный класс Spanable, например.

Добавлено через 3 минуты
В этом коде "тупо" парсится некоторая ключ-строка из ресурсов, чтобы подставить картинку всё равно через spanable. Это не значит, что такая возможность идёт "из коробки".
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 7
07.05.2019, 16:58  [ТС]
ExFau$t, ну так будьте добры, объясните, как подставить картинку в текст через spanable?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
07.05.2019, 17:03
Чем код выше не устраивает?

Добавлено через 35 секунд
Java
1
2
3
4
5
spannable.setSpan(  new ImageSpan(context, id),
                                matcher.start(),
                                matcher.end(),
                                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
                             );
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 7
07.05.2019, 17:16  [ТС]
ExFau$t, просто я недавно начал изучать программирование на андроид. И пока что я не особо понял, как все таки реализовать вставку изображения между текстом. Если вам не сложно, можете подробно рассказать что я должен сделать. Мне бы просто понять, а дальше я уже сам.
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
07.05.2019, 18:02
Цитата Сообщение от BersKZ Посмотреть сообщение
что я должен сделать
Взять класс, приведённый выше и использовать его вместо обычного TextView. Можно даже попробовать задавать имя картинки в drawable через strings.xml, если очень надо.
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 7
07.05.2019, 18:06  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
Можно даже попробовать задавать имя картинки в drawable через strings.xml, если очень надо.
Вы же выше говорили что этого сделать нельзя?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
07.05.2019, 18:13
Я сказал, что это нельзя сделать "из коробки", в том виде, как был поставлен вопрос без контекста. Этот класс позволяет так сделать, просто разбирает строку текста и при нахождении спец строки, регуляркой задаётся, вытаскивает оттуда имя файла из drawable, грузит его и добавляет в текст через Spanable.

Добавлено через 1 минуту
То есть в strings задаётся не картинка, а текст с особыми захаркоженными ссылками на картинки.
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 7
07.05.2019, 18:18  [ТС]
ExFau$t, да, я видел этот код
Java
1
2
3
4
5
Spannable span = new SpannableString("слово слово_под_замену_на картинку слово");
Drawable android = context.getResources().getDrawable(R.drawable.картинка);
android.setBounds(0, 0, 32,32);
ImageSpan image = new ImageSpan(android, ImageSpan.ALIGN_BASELINE);
span.setSpan(image, 4, 14, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
Я пробовал, но у меня ничего не вышло. Если не сложно, можете просто дать готовый код вставки изображения? Я не понял почему текущий код не сработал.
Или это был не весь код?
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 7
08.05.2019, 13:52  [ТС]
ExFau$t, вы тут?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2019, 13:52
Помогаю со студенческими работами здесь

Получить содержимое строки по содержанию переменной, но не из файла strings.xml
&quot;a&quot; это кнопка, и я задаю название кнопки. Название кнопки записано в файле strings_new.xml в строке: &lt;string...

Как задать заголовок диалога через элемент strings.xml?
Я перевожу свою программу на английский язык, но возникла одна проблема: названия диалогов остались непереведенными, т.к. их текст задается...

Парсер изображения с XML
нужно расшифровать и вывести как изображение в php документе. как это сделать?

Загружаем изображения с XML-RPC
Здравствуйте, пытаюсь загрузить несколько картинок через протокол XML-RPC на сайт WordPress. Получается загрузить одну, что бы загрузить...

Преобразование изображения в текст для xml
Здравствуйте, автоматически генерирую xml документ в C#, такая загвоздка - изображения в нём представлены в длинном письменном виде. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru