使用阿拉伯字体时文本对齐问题

时间:2011-06-28 10:15:43

标签: android android-edittext arabic text-alignment

下面的屏幕截图显示了我的问题。

第一个EditText显示阿拉伯语中的提示向上移动,现在第二个EditText仅供参考,显示英语版本完全正常。同样适用于Button

我在strings.xml中声明了这样的字符串:

<string name="ar_login">دخول</string>

screenshot of the problem

这就是我设置EditText的提示的方法:

UserName.setTypeface(ArabicFont);
String hint = getString(R.string.ar_HintUserName);
....
UserName.setHint(hint);

更新 我用过这个,但没用:

UserName.setGravity(Gravity.CENTER_VERTICAL);

但是有了这个,文字略微下降了;但我猜它不是通用的:

UserName.setPadding(0,15,0,0);

PaddingEnglish字向下移动。

更新2: 最初阿拉伯语文本是分开的;意味着它们是逐字显示的。所以加入他们,我正在使用这个Arabic Reshaper。要下载代码,请检查此link

现在,当我重新塑造阿拉伯语文本,然后设置TextViewEditText's提示时,它已经向上移动,但没有重塑它是好的。

所以我猜,我是否必须更改重塑类或使我的textview不分割单词。但不知道去哪儿了?

3 个答案:

答案 0 :(得分:3)

我仍然无法找出为什么Android在我的第二次编辑中将阿拉伯语单词拆分为单独的字母我提供的链接使用类重新加入分隔的字母并再次形成单词。

reshape函数中,最后错误地附加了\n,只是删除它就可以解决问题。

答案 1 :(得分:1)

我确定您使用的字体文件有问题。!

[抱歉,由于我的声誉较低,我不允许上传截图:(]

对于布局,我在xml中设置文本,在代码中设置字体。而且我没有设置填充/重力等任何属性。但它对我来说很好。

所以,我可以向您保证,使用其风格符合您要求的字体文件可以解决您的问题。

只是为了帮助你,但我不确定我是否从DroidSansFallback.ttf获得了字体文件

答案 2 :(得分:0)

只是一个猜测:) ...,

  1. 如果阿拉伯字体的大小较低怎么办? [如果是这种情况,那么Gravity.CENTER_VERTICAL应该适合你:(]

  2. 可能是这个字体文件的样式。如何为阿拉伯文本尝试不同的字体文件?