根据语言环境改变字体大小

5
我有一个应用程序,在其中定义了所有必要的细节,现在我想将其本地化。 我知道我们需要创建值文件夹,并添加字符串,其中语言的字符串使用相同的“键”进行声明。
我的问题是,假设我的应用程序标题是“DASHBOARD”,而在西班牙语中为“Tablero de instrumentos”,这包含比英语更多的字母,因此会影响应用程序的对称性。 我想要根据所选择的语言自定义字体大小,以便不影响我的用户界面。

你可以使用第三方库来达成这个目的。我在Android Arsenal 上读到了一些相关的库。 - Sufian
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Dhaval Patel
3个回答

0
你可能想要尝试这个。
String language = Locale.getDefault().getDisplayLanguage();

if ( language.equalsIgnoreCase("Spanish") {
    myTextView.setTextSize( font_size );
}

0

我认为这里有适合您的解决方案:

如何调整文本字体大小以适应TextView

根据这个主题,您可以使用:

speedplane的FontFitTextView,但它只会在需要时减小字体大小以使文本适合,并保持其字体大小。它不会增加字体大小以适应高度。

注意:speedplane是来自StackOverflow论坛的一个人的昵称。

代码:FontFixTextView.java


0

您可以通过为不同的语言/区域设置创建尺寸文件,并为您的尺寸定义自定义名称,以不同的本地化/语言设置使用不同的值来实现此目的。

就像我在资源目录下的values文件夹中创建了3个名为dimens的文件,但是每个文件都针对不同的本地化设置进行了定义。
enter image description here

您可以通过右键单击res -> New -> Android resource File来创建此文件。 并填写以下详细信息。
enter image description here 这样做即可为不同的本地化设置创建不同的文件。

对于不同的语言,我有不同的值。例如- enter image description here 对于英语,我有这些值, enter image description here 对于印地语,我有这些值。

正如您所看到的,dimen键的名称在所有文件中都相同,但值不同。

现在,您可以通过以下方式在代码中获取这些值:

val lineHeight = context.resources.getDimension(R.dimen.H6_lineHeight)

现在这个函数将不会返回您在文件中提到的值,而是以像素为单位返回值。

现在您可以使用此函数获取 sp 单位的值。您可以使用您的转换器函数来代替此函数,将值转换为您所需的单位。

fun pixelsToSp(context: Context): Float {
    val scaledDensity = context.resources.displayMetrics.scaledDensity
    return this / scaledDensity
}

现在,安卓将根据工作设备的语言环境处理并从相应文件中选择值。


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