是否可以在Android XML资源文件中编写字符串数组文字?

时间:2012-01-06 20:14:26

标签: android android-resources android-preferences

对于我的PreferenceActivity,我使用的是典型的preferences.xml文件。

ListPreference的entryValues不是要本地化的东西。是否可以使用某种数组文字直接定义entryValues属性?

我在下面的第一次尝试不起作用,“pull,push”被认为是一个字符串:

<ListPreference
        android:key="server_reception_mode"
        android:title="@string/title_server_reception_mode_preference"
        android:entries="@array/entries_server_reception_mode_preference"
        android:entryValues="pull, push" />

3 个答案:

答案 0 :(得分:3)

您可以声明<string-array>字符串数组。例如:

<string-array name="entry_values">
    <item>pull</item>
    <item>push</item>
</string-array>

然后您可以在XML中使用它:

<ListPreference
    android:key="server_reception_mode"
    android:title="@string/title_server_reception_mode_preference"
    android:entries="@array/entries_server_reception_mode_preference"
    android:entryValues="@array/entry_values" />

如果你只是在避免翻译,你可以使用Android sources中使用的约定:它们有名为values/donottranslate.xmlvalues/donottranslate-names.xml等的资源文件。

答案 1 :(得分:1)

查看entryValues属性的documentation,否:

  

必须是对其他资源的引用[...]

当然,仅仅因为你有一个字符串资源并不意味着你来本地化它。

答案 2 :(得分:0)

您需要在资源中创建一个数组。你不能像你希望的那样直接申报。

对于那些类型的数组,我通常会创建第二个XML文件,其中包含所有不需要转换的条目(如array-notranslate.xml)。这样,如果您将xml文件交给某人进行翻译,他们就不必处​​理它。