我可以在 textView 中放入多语言吗?例如,我可以有一个带有阿拉伯文字和英文数字的 textView 吗?
只要两个文本都以 Unicode 格式编码,Murillo Henrique 建议的解决方案就可以工作。
另一方面,当任何文本是非 Unicode 时,我们将无法在单个 TextView 控件中显示它。
如上所示,第一个 TextView 显示英语和阿拉伯语文本。这是因为两者都是 Unicode 文本。为此,可以简单地组合不同语言的字符串,如下所示。
txtUnicode.setText( "The Saved Group " + "الفرقة الناجية");
在第二个 TextView 控件中,加载的文本是非 Unicode 马拉雅拉姆语文本。要正确显示非 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 的通用字体。有关更多详细信息,请参阅此内容。
您有 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/>