我可以在textView中添加多语言吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以在textView中添加多语言吗?相关的知识,希望对你有一定的参考价值。

我可以在textView中添加多语言吗?例如,我可以使用带有阿拉伯语文本和英文数字的textView吗?

答案

只要两个文本都以Unicode格式编码,Murillo Henrique建议的解决方案就可以使用。

另一方面,当任何一个文本都是非Unicode时,我们将无法在单个TextView控件中显示它。

enter image description here

如上所示,第一个TextView显示英语和阿拉伯语文本。这是因为两者都是Unicode文本。为此,可以简单地组合不同语言的字符串,如下所示。

txtUnicode.setText( "The Saved Group " + "الفرقة الناجية");

在第二个TextView控件中,加载的文本是非Unicode Malayalam文本。要正确显示非Unicode文本,需要加载相应的字体,如下所示。

Typeface tfMalayalam = Typeface.createFromAsset(getAssets(), "fonts/FML-TT-Leela_Heavy.ttf");
textNonUnicode.setTypeface(tfMalayalam);
textNonUnicode.setText("hnPbn¨I£n");

可以看出,传递给setText方法的文本是不可读的,因为它是非Unicode编码形式。但是在运行时提供正确的字体时,它会正确显示文本。

当我们处理来自遗留源的非Unicode文本时,这种非Unicode字体加载将非常有用。

在第三个TextView控件中,Unicode文本将附加到非Unicode文本,如下所示。

TextView textUnicodePlusNonUnicode = (TextView) findViewById(R.id.txtUnicdePlusNonUnicode);
textUnicodePlusNonUnicode.setTypeface(tfMalayalam);
textUnicodePlusNonUnicode.setText("hnPbn¨I£n" + " Unicode English");

因为设置了非Unicode字体,系统将尝试使用加载的字体指定的非Unicode编码方案显示Unicode文本。因此,提供的Unicode文本Unicode English将不会按预期显示。

作为附加信息,Google正在为android平台定义名为Noto的通用字体。有关详细信息,请参阅this

另一答案

你有2个选择:

一:键入文本,但在键入期间在键盘中切换各种语言。

或者我推荐的第二个,因为你将所有文本放在一个文件中,以后更容易修改它。

myTextView.setText(R.string.text1 + " " + R.string.text2);

在String.xml中:

<string name="text1">Your english text goes here/>
<string name="text2">Your arabic text goes here/>

以上是关于我可以在textView中添加多语言吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 AsyncTask 中将新的 TextView 设置为片段

在android中的类内的对话框片段的线性布局中添加textview

片段中的TextView在Android Studio中返回Null

如何在 Activity 的 Fragment 中添加按钮或 textView

从片段更新ListView适配器内的TextView

将一个片段调用到另一个片段时更改标题TextView