2014-10-08 2 views
0

У меня есть этот ресурс строки массива в /res/values/arrays.xml, для ListPreference:Ресурс массива Android: дублировать объявление xml для больших экранов?

<string-array name="pref_font_size_entries"> 
    <item>Small</item> 
    <item>Normal</item> 
    <item>Large</item> 
    <item>Extra Large</item> 
</string-array> 

Если я хочу, чтобы добавить дополнительный элемент списка (см последний <item>Huge</item>) на большее экранов, нужно ли дублировать всю декларацию в /res/values-sw600dp/arrays.xml?

<string-array name="pref_font_size_entries"> 
    <item>Small</item> 
    <item>Normal</item> 
    <item>Large</item> 
    <item>Extra Large</item> 
    <item>Huge</item> 
</string-array> 
+0

Определить элемент, который вы хотите для большего экрана. Если элемент не находится в отдельном xml, андроид получит значение xml по умолчанию. – Pr38y

+1

Единственное отличие, похоже, ' Огромное' во втором массиве.xml. Одной из альтернатив дублирования было бы поместить это в файл по умолчанию arrays.xml, но отключить его, проверив плотность экрана, когда вы показываете настройки, если это не подходит. – Squonk

ответ

1

Да, вы должны дублировать все определение pref_font_size_entries, поскольку они не являются кумулятивными. Android выбирает XML-файл, который лучше всего подходит для решения. Если у вас есть другие определения здесь или другие XML-файлы в/res/values, которые одинаковы для/res/values-sw600dp, вам не нужно их дублировать.

+0

Хорошо, предположим, что файл _arrays.xml_ имеет много других ресурсов, которые не меняются, не могли бы вы переместить определение _pref_font_size_entries_ (и любые другие связанные) в другой файл _arrays_preferences.xml_ и только дублировать этот меньший xml-файл, а не весь _arrays.xml_? – AnAurelian

+0

@Jamrelian Это звучит разумно и сделает различия более ясными. – Kai

0

Не нужно, достаточно одного /res/values/arrays.xml.

Объяснение:

Android достаточно умна. Он будет искать подходящую папку для ресурсов. Если ее не найти, она автоматически переместится в папку по умолчанию. Итак, если в обоих файлах нет разницы, то достаточно одного файла в папке по умолчанию.

+0

Вы уверены? Зачем? –

+0

@PareshMayani Я обновил свой код. – Gunaseelan

+2

Внимательно прочитайте его вопрос. ' Огромный' - дополнительный элемент в '/ values-sw600dp/arrays.xml'. –

Смежные вопросы