在Android项目中处理strings.xml的最佳方法

时间:2017-01-23 10:40:40

标签: android xml

想在Android项目中询问 strings.xml 。我经常看到正常用法是将整个App的所有文本都放在strings.xml中。我还看到strings.xml包含系统字符串,其余的存储在具有类名称的xml文件中。像这样:

  

ActivityMain.java(有许多文本字符串供用户阅读)

     

activity_main.xml(保存ActivityMain.java的所有文本字符串)

我看上去android-best-practices,但没有发现这一点。

也许这无所谓,但您对此有何看法,优点和缺点?

2 个答案:

答案 0 :(得分:2)

要管理项目的字符串,最好的方法(从我不太长的经验)是分割与其相关的字符串的用法。

例如,
如果您有2个活动:MainActivity.javaactivity_main.xml(让他们称之为MainActivity)和SecondActivity.java与activity_second.xml,您需要根据活动名称拆分字符串。所以你需要做:

  • strings_main.xml
  • strings_second.xml

在strings_main.xml中,您需要使用activityname_text模式。例如,如果在MainActivity中有一个Title TextView,那么你需要添加:

<string name="main_title">My Title</string>

对于MainActivity中的不可翻译的字符串,您可以添加以下内容:

<string name="main_app_name" translatable="false">MyAppName</string>
<string name="main_developer_name" translatable="false">My Developer Name</string>

如果您有一个大型项目,其中每个不同的Activity(或包)由另一个开发人员维护,则此方法是合适的。这种方法将确保您不会意外地更改其他活动的文本而不是当前编辑的活动。

对于多语言,我们只需要根据语言创建一个文件夹。例如,对于印度尼西亚语,我们只需要添加values-in文件夹。然后我们可以从values文件夹中复制字符串xml。更多Supporting Different Languages

为应用添加其他语言(例如,印度尼西亚语)时,如果values中有字符串但values-in中没有字符串,则Android Studio会抱怨缺少翻译。例如,如果在values我们有:

<string name="main_title">My Title</string>

但在values-in中不存在,那么Android Studio会在Build-&gt;时抱怨不存在的翻译。发布应用。我们可以通过添加translatable=false

来修复错误
<string name="main_title" translatable="false">My Title</string>

我们也可以更改翻译,因为Android Studio中有翻译编辑器。

对于项目命名惯例,您可以查看Ribot android-guidelines

答案 1 :(得分:-1)

这完全取决于您的喜好。并且存在很多存储字符串的方法。编码风格多。

  • 一种方法:将所有内容存储在strings.xml中。这对小型项目来说可以, 但是当字符串的数量超过50时,所有的东西都会搞砸了。
  • 第二种方式:按使用目的存储。像login_error_strings.xml之类的东西。这个想法被描述为here

  • 第三种方式:存储在静态字段中。创建一些Const.class并将所有内容放在那里。我真的不知道它有什么缺点,但是存在一些不妥之处。

只是为了澄清:我认为&#34;第二种方式&#34;这是最好的方式。