想了解Android项目中的string.xml。我经常看到,通常的用法是将整个应用程序的所有文本都放在strings.xml中。我也看到了strings.xml包含系统字符串,其余的存储在具有类名称的xml文件中。像这样:
ActivityMain.java(有许多文本字符串供用户阅读)
activity_main.xml(保存ActivityMain.java的所有文本字符串)
我查看了android的最佳实践,但没有发现任何提及。
也许这并不重要,但你对此有什么看法,利弊?
要管理项目的字符串,最好的方法(根据我不太长的经验)是拆分与它的使用相关的字符串。
例如,
如果您有两个活动:MainActivity.java
和activity_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
,然后把你想要的东西都放在那里。我真的不知道它的缺点是什么,但有点不对劲。
只是澄清一下:我认为"第二种方式"是最好的方式。