想在Android项目中询问 strings.xml 。我经常看到正常用法是将整个App的所有文本都放在strings.xml中。我还看到strings.xml包含系统字符串,其余的存储在具有类名称的xml文件中。像这样:
ActivityMain.java(有许多文本字符串供用户阅读)
activity_main.xml(保存ActivityMain.java的所有文本字符串)
我看上去android-best-practices,但没有发现这一点。
也许这无所谓,但您对此有何看法,优点和缺点?
答案 0 :(得分:2)
要管理项目的字符串,最好的方法(从我不太长的经验)是分割与其相关的字符串的用法。
例如,
如果您有2个活动:MainActivity.java
与activity_main.xml
(让他们称之为MainActivity)和SecondActivity.java
与activity_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)
这完全取决于您的喜好。并且存在很多存储字符串的方法。编码风格多。
第二种方式:按使用目的存储。像login_error_strings.xml之类的东西。这个想法被描述为here
第三种方式:存储在静态字段中。创建一些Const.class
并将所有内容放在那里。我真的不知道它有什么缺点,但是存在一些不妥之处。
只是为了澄清:我认为&#34;第二种方式&#34;这是最好的方式。