Ответ 1
К сожалению, такой синтаксис не поддерживается файлами ресурсов Android.
Я пытаюсь объединить статическую "жестко закодированную" строку с одной ссылкой из 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/...
, он работает хорошо (как упоминалось здесь), но мне было интересно, есть ли способ для извлечения ссылочной строки и объединения ее в "жестко закодированную".
К сожалению, такой синтаксис не поддерживается файлами ресурсов Android.
Использование 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?
Существует способ получения этого эффекта путем определения ресурса строки с помощью владельца места и использования String.format()
перегрузки стиля getResourses().getString()
в коде позади:
В string.xml
<string name="secs">%1$d seconds</string>
В activity_layout.xml
<TextView android:id="@+id/secs_label" />
В TheActivity.java
((TextView)findViewByID(R.id.secs_label)).setText(getResources().getString(R.string.secs, 25));