【问题标题】:How do I create a navigation drawer with non english items?如何创建带有非英语项目的导航抽屉?
【发布时间】:2014-07-26 06:55:29
【问题描述】:

此代码存储在 res/values/strings.xml 中

    <string-array name="planets_array">
      <item>एक काम</item>
      <item>दो काम</item>
      <item>तीन काम</item>
      <item>चार काम</item>
    </string-array>

该数组将被传递到 ArrayAdapter 中,该 ArrayAdapter 将在 Navigation Drawer 中使用。 但是,我希望使用英文名称来引用这些项目。

编辑


此代码是根据 Dave 建议的更改完成的。

<resources>
    <string name="Mercury">एक काम</string>
    <string name="Venus">दो काम</string>
    <string name="Earth">तीन काम</string>
    <string name="Mars">चार काम</string>

    <string name="app_name">Navigation Drawer Example</string>

    <string-array name="planets_array">
      <item>@string/Mercury</item>
      <item>@string/Venus</item>
      <item>@string/Earth</item>
      <item>@string/Mars</item>
      <item>Jupiter</item>
      <item>Saturn</item>
      <item>Uranus</item>
      <item>Neptune</item>
    </string-array>

    <string name="drawer_open">Open navigation drawer</string>
    <string name="drawer_close">Close navigation drawer</string>
    <string name="action_websearch">Web search</string>
    <string name="app_not_available">Sorry, there\'s no web browser available</string>
</resources>

当我点击前四个项目时,行星的相应图像不会显示在导航抽屉中,但是当我点击最后四个项目(从木星开始)时,它工作正常

【问题讨论】:

  • 使用英文名引用??你什么意思?
  • 现在只有当我可以指定一些东西为 a=एक काम
  • 现在您必须使用字符串引用名称来显示图像,而不是使用它们的值。你如何实现点击事件监听器?

标签: java android xml string


【解决方案1】:

您可以为每个 item 设置 name 属性,但您必须解析 strings.xml 文件并使用可用的 getValue属性集。检查这个 SO 问题:

Get name attribute of item of string array

不过我还没有时间尝试这个。

【讨论】:

    【解决方案2】:

    已经回复here

    正如 Android reference 所说:

    <item>
        ...
        The value can be a reference to another string resource.
        ...
    

    解决方案:

    首先,您必须使用您的英文名称编写简单的字符串元素:

    <string name="english_planet_1_name">एक काम</string>
    <string name="english_planet_2_name">दो काम</string>
    <string name="english_planet_3_name">तीन काम</string>
    <string name="english_planet_4_name">चार काम</string>
    

    然后您可以在任何地方引用它们,甚至可以从字符串数组项中引用它们:

    <string-array name="planets_array">
        <item>@string/english_planet_1_name</item>
        <item>@string/english_planet_2_name</item>
        <item>@string/english_planet_3_name</item>
        <item>@string/english_planet_4_name</item>
    </string-array>
    

    最后你得到了两个:你的星球本地名称和他们的英文参考名称。

    【讨论】:

    • 我试过了,但它似乎不起作用。当我单击它时,它应该向我显示图像。但它没有显示
    • 图片?也许你有一个不同的问题。用更多代码扩展您的问题并向我们解释您要做什么。
    • 立即查看问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多