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

时间:2013-10-17 21:08:45

标签: android textview typeface

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

Example

2 个答案:

答案 0 :(得分:1)

只要两种文本都以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

答案 1 :(得分:0)

您有两个选择:

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

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

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