Как я могу объединить статические строки со строковыми ресурсами XML? - PullRequest
9 голосов
/ 20 ноября 2011

Я пытаюсь объединить статическую «жестко закодированную» строку с одной из strings.xml, на которую ссылаются элементы массива строк.

Цель состоит в том, чтобы получить список динамических метрик, в котором число одинаково дляна всех языках, но текстовое значение метрики может меняться в зависимости от языка, что-то вроде этого:

<string-array name="interval_labels">
    <item>30 @string/second</item>
    <item>1 @string/minute</item>
    <item>5 @string/minute</item>
    <item>10 @string/minute</item>
    <item>15 @string/minute</item>
    <item>30 @string/minute</item>
    <item>60 @string/minute</item>
</string-array>

Прямо сейчас, если я удаляю числа перед ссылками @string/..., это работает хорошо (как упоминалось здесь ), но мне было интересно, есть ли способ извлечь указанную строку и объединить ее с "жестко закодированной".

Ответы [ 3 ]

6 голосов
/ 20 ноября 2011

Извините, такой ресурс не поддерживается файлами ресурсов Android.

1 голос
/ 02 ноября 2015

Использование сущностей XML возможно.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
  <!ENTITY mintues "minutes">
  <!ENTITY minute "minute">
  <!ENTITY seconds "seconds">
]>

<resources>
  <string-array name="interval_labels">
    <item>30 &seconds;</item>
    <item>1 &minute;/item>
    <item>5 &minutes;</item>
    <item>10 &minutes;</item>
    <item>15 &minutes;</item>
    <item>30 &minutes;</item>
    <item>60 &minutes;</item>
  </string-array>
</resources>

Я использовал этот ответ: динамическая строка с использованием String.xml?

0 голосов
/ 31 июля 2015

Существует способ сортировки этого эффекта путем определения строкового ресурса с заполнителем и использования перегрузки стиля String.format() на getResourses().getString() в коде:

В string.xml

<string name="secs">%1$d seconds</string>

In activity_layout.xml

<TextView android:id="@+id/secs_label" />

В TheActivity.java

((TextView)findViewByID(R.id.secs_label)).setText(getResources().getString(R.string.secs, 25));
...