使用不同的语言环境更改文本大小

7

我已经为我的应用程序添加了西班牙语和法语,但是在西班牙语中有些词汇比英语长。当访问values-es/string.xml文件时如何更改文本大小?

3个回答

11
你可以使用dimens.xml资源文件来实现这个目的。在你的情况下,你可能需要创建一个名为res/values-es/dimens.xml的文件,并且可能还需要一个-fr版本。你可以在res/values/dimens.xml(或者如果你想更加具体的话,在res/values-en/dimens.xml)中指定默认值。
示例来自于developer.android.com上的更多资源类型部分dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="textview_height">25dp</dimen>
    <dimen name="textview_width">150dp</dimen>
    <dimen name="ball_radius">30dp</dimen>
    <dimen name="font_size">16sp</dimen>
</resources> 

在xml中应用

<TextView
    android:layout_height="@dimen/textview_height"
    android:layout_width="@dimen/textview_width"
    android:textSize="@dimen/font_size"/>

或者在代码中

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

在SO上也有一些解决方案,使用迭代/递归过程来缩小TextView的文本大小以'适应'其边界框(使用自定义视图),但我认为上面的方法更加健壮,特别是如果您考虑将来添加更多语言。


1
以上解释是正确的,但它们并没有完全讲清楚如何做。当您在Android Studio中打开项目时,它会自动显示该项目的“Android”模式。您需要点击Android Studio左上角的“Android”选项卡,选择“Project”。然后,您需要进入“app>src>main>res”文件夹。接下来,您需要右键单击“res”文件夹,并从弹出的菜单中选择“New>Android resource directory”。这将弹出一个对话框,输入“values-es”作为目录名称,然后单击“OK”。这将创建一个包含所有西班牙语区域值的文件夹。然后,您可以右键单击此“values-es”文件夹以创建“dimens.xml”,“string.xml”,“color.xml”等文件,这些文件将在手机选择西班牙语区域时使用。
如果您已经通过图形用户界面为西班牙语区域设置创建了一个string.xml文件,那么当您进入项目时,带有string.xml文件的values-es文件夹已经存在。在这种情况下,您只需要右键单击values-es文件夹,在那里为西班牙语区域设置创建dimens.xml文件。

0
你需要在layout-es中指定一个不同的布局文件。这样当安卓从values-es/string.xml获取内容时,它将加载不同的layout-es/yourfile.xml。那个布局文件可以在视图上指定主题、样式或文本大小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接