XML внутри строкового ресурса Android? - PullRequest
38 голосов
/ 20 декабря 2010

Мне было интересно, смогу ли я поместить XML в /res/values/strings.xml? Я спрашиваю об этом, потому что я проверяю файл данных XML для моего приложения, если он еще не существует, он создает его из содержимого по умолчанию, которое будет содержаться как строковый ресурс.

Eclipse пытается изменить теги «меньше» и «больше» на соответствующие им объекты HTML при использовании графического интерфейса для редактирования строк. Затмение на правильном пути? Потому что я должен думать, что он будет записан в мой файл как HTML-сущности. Могу ли я использовать getText() вместо getString() для преобразования сущностей обратно в теги?

Ответы [ 3 ]

74 голосов
/ 20 декабря 2010

Да, вы можете, просто используйте CDATA

<string name="stringName1"><![CDATA[<html>bla</html>]]></string>

2 голосов
/ 11 апреля 2013

Я сделал так:

Поместите строку в strings.xml

<string name="my_string"><![CDATA[Your long text here]]></string>

Как использовать:

<TextView
    android:id="@+id/textView"
    android:text="@string/my_string"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

Выполнено

2 голосов
/ 20 декабря 2010

Это, очевидно, не будет работать, если вы не экранируете такие символы, как <или> или &.

Если вы кодируете XML, он должен работать нормально, но, вероятно, это не лучший способ сделать это.Я бы предпочел двоичный ресурс.


Для помещения в string.xml вы можете кодировать, используя

String encoded = URLEncoder.encode(xml);

А декодирование противоположное.

Для двоичноговы помещаете его в папку RAW и получаете двоичный поток, превращаете его в строку и загружаете.

...