Android中的TextView textSize和@string

时间:2013-12-15 09:28:39

标签: android android-layout

我有以下xml代码:

<TextView android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Press Button"                  <!--Warning -->
          android:textSize="45dp"                      <!--Warning -->
          android:layout_gravity="center"
          android:gravity="center"
          android:id="@+id/tvDisplay" />

在xml代码中,我首先发现了两个警告,dp包含我确实使用sp的警告。它出现的原因是什么?

第二个警告,可能是错误,我正在使用android:text="Press Button"它告诉我确实使用@string。如果我使用相同的@string显示在看起来很尴尬的文本中。它是什么原因!

4 个答案:

答案 0 :(得分:1)

String不会推荐View中的硬编码MyProject/ res/ values/ strings.xml values-es/ strings.xml values-fr/ strings.xml 值,因为与不同语言兼容的Android应用程序的制作会被扭曲。

参考

要添加对更多语言的支持,请在res /中创建其他值目录,其中包含连字符和目录名末尾的ISO国家/地区代码。例如,values-es /是包含语言代码为“es”的Locales的简单resourcess的目录。 Android在运行时根据设备的区域设置加载适当的资源。

确定要支持的语言后,请创建资源子目录和字符串资源文件。例如:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">My Application</string>
<string name="hello_world">Hello World!</string>
</resources>

将每个语言环境的字符串值添加到相应的文件中。

在运行时,Android系统根据当前为用户设备设置的区域设置使用适当的字符串资源集。

例如,以下是针对不同语言的一些不同的字符串资源文件。

英语(默认语言环境),/ values / 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>

西班牙语,/ values-es / strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="press">Press Button</string>
</resources>

参考你的OP:

保存在res / values / strings.xml的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"  />

此布局XML将字符串应用于视图:

String string = getString(R.string.hello);

此应用程序代码检索字符串:

size

使用 sp developer.android.com

的建议设置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.

<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="font_size">16sp</dimen> </resources>

保存在res / values / dimens.xml的XML文件:

Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);

此应用程序代码检索维度

<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" 
/>

此布局XML将维度应用于属性:

{{1}}

答案 1 :(得分:0)

文字的推荐尺寸类型是&#34; sp&#34;对于缩放像素(例如:15sp)

来自developer.android

答案 2 :(得分:0)

Android stander TextView大小是使用SP,你是我发出警告的硬编码字符串。

请在价值文件夹中使用您的String.xml并选择此字符串,然后它不会出现任何错误。

谢谢

答案 3 :(得分:0)

最好to use SP instead of DP

建议使用always string资源文件,因为如果需要更改多个xml文件中使用的单个@String,则只需更改一次。反之亦然,如果您在xml布局文件中编写字符串,如果需要更改字符串,则需要搜索字符串,搜索xml文件,然后更改所需的任意数量。

总之,硬编码字符串不是一个好习惯。您应该将它们指定为字符串资源文件,然后在布局中引用它们。这样,您只需编辑strings.xml文件,即可同时更新所有布局中单个单词的每次出现

还需要支持多种语言定义作为单独的strings.xml一个文件的一个文件!