Как я могу прочитать .txt в файле string.xml? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть длинный текст, который мне нужно поместить в строки, и пока он выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="long_text">
xxx
xxx
xxx
xxx
</string>
</resources>

И это выглядит плохо.Кроме того, если я хочу изменить текст, это немного неудобно.Поэтому я хотел бы иметь что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="long_text"> assets/myfile.txt </string>
</resources>

Этот длинный текст xxx будет храниться в файле - myfile.txt - где-нибудь в папке.Я видел некоторые решения, в которых текст вставляется через код Java, а не в strings.xml, но это слишком сложно для меня.Кто-нибудь может мне с этим помочь?

1 Ответ

2 голосов
/ 09 июля 2019

Решение, в значительной степени основанное на реализации, предоставленной: https://alvinalexander.com/android/how-to-store-static-text-in-android-file-res-values

Вы можете создать автономный ресурс вне файла strings.xml , если вы заинтересованы в управлении массивным блокомтекста.Это ограничивает опечатки одним файлом, т. Е. Если вы забудете где-нибудь заключить в скобки, он будет изолирован для конкретного XML-документа.

Создайте XML-файл в res / values ​​ с именем strings_longtext.xml и поместите туда одно текстовое значение.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="very_large_string">
        <![CDATA[
            Lorem ipsum
            Lorem ipsum
            Lorem ipsum
            Lorem ipsum
            Lorem ipsum
            Lorem ipsum             
        ]]>
    </string>
</resources>

Затем вы можете получить доступ к этой строке через средство доступа к контексту, аналогичное обычному strings.xml файлу.

context.getString(R.string.very_large_string);

Причина, по которой вы не должны помещать имена файлов в strings.xml , является многократной:

  • Изменяет значения строк как фактические текстовые значения на ссылки на файлыкоторые нужно проанализировать и обработать
  • Может быть непреднамеренно или поврежден в i18n усилиях
  • Управление кодом / версией существует за пределами определенного каталога ресурсов

Цель strings files для чистых строк, и добавление интерпретации имени файла к нему является запахом кода и приведет к болезненной поломке по мере увеличения проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...