View 中的硬编码String 值不被developer.android.com 推荐,因为制作与不同语言兼容的Android 应用程序被扭曲了。
引用自
要添加对更多语言的支持,请在 res/ 内创建附加值目录,其中包括连字符和目录名称末尾的 ISO 国家/地区代码。例如,values-es/ 是包含语言代码“es”的语言环境的简单资源的目录。 Android 在运行时根据设备的区域设置加载适当的资源。
一旦您决定了您将支持的语言,请创建资源子目录和字符串资源文件。例如:
MyProject/
res/
values/
strings.xml
values-es/
strings.xml
values-fr/
strings.xml
将每个语言环境的字符串值添加到相应的文件中。
在运行时,Android 系统会根据当前为用户设备设置的区域设置使用适当的字符串资源集。
例如下面是针对不同语言的一些不同的字符串资源文件。
英语(默认语言环境),/values/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">My Application</string>
<string name="hello_world">Hello World!</string>
</resources>
西班牙语,/values-es/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">Mi Aplicación</string>
<string name="hello_world">Hola Mundo!</string>
</resources>
参考您的 OP:
XML 文件保存在 res/values/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="press">Press Button</string>
</resources>
此布局 XML 将字符串应用于视图:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/press"
android:textSize="45dp" <!--Warning -->
android:layout_gravity="center"
android:gravity="center"
android:id="@+id/tvDisplay" />
此应用程序代码检索字符串:
String string = getString(R.string.hello);
按照developer.android.com 的建议,使用 sp 设置 size
sp : Scale-independent Pixels - This is like the dp unit, but it is also scaled by the user's font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and the user's preference.
保存在 res/values/dimens.xml 的 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="font_size">16sp</dimen>
</resources>
此应用程序代码检索维度
Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);
此布局 XML 将尺寸应用于属性:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Press Button" <!--Warning -->
android:textSize="@dimen/font_size"
android:layout_gravity="center"
android:gravity="center"
android:id="@+id/tvDisplay"
/>