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



想了解Android项目中的string.xml。我经常看到,通常的用法是将整个应用程序的所有文本都放在strings.xml中。我也看到了strings.xml包含系统字符串,其余的存储在具有类名称的xml文件中。像这样:

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

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

我查看了android的最佳实践,但没有发现任何提及。

也许这并不重要,但你对此有什么看法,利弊?

要管理项目的字符串,最好的方法(根据我不太长的经验)是拆分与它的使用相关的字符串。

例如,
如果您有两个活动: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>

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

对于多种语言,我们只需要根据语言创建一个文件夹。例如,对于印尼语,我们只需要添加values-in文件夹。然后我们可以从values文件夹中复制字符串xml。更多关于支持不同语言的信息。

当为应用程序添加不同的语言(例如印尼语)时,如果values中有字符串,但values-in中没有,Android Studio会抱怨缺少翻译。例如,如果在values中,我们有:

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

但在values-in中不存在,那么Android Studio将在构建->发布应用程序时抱怨不存在翻译。我们可以通过添加translatable=false:来修复错误

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

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

关于项目命名约定,您可以查看Ribot android指南。

这一切都取决于您的偏好。还有很多存储字符串的方法。与编码样式一样多。

  • 一种方法:将所有内容存储在strings.xml中。这对于小型项目来说是可以的,但当绳子的数量超过50根时,一切看起来都会一团糟
  • 第二种方式:按用途存储。比如login_error_strings.xml等等

  • 第三种方式:存储在静态字段中。创建一些Const.class,然后把你想要的东西都放在那里。我真的不知道它的缺点是什么,但有点不对劲。

只是澄清一下:我认为"第二种方式"是最好的方式。

最新更新