【发布时间】:2016-08-01 06:10:26
【问题描述】:
这听起来可能有点可疑,但是,即使我不知道这在 android 中是否可行。要求是我需要在edittext中编写两种语言,一种是urdu,另一种是默认英语,现在问题出在字体上,因为我必须使用urdu字体作为默认字体,我使用setTypeface如下:
editText.setTypeface(englishFont);
但问题是这个字体的英文不好,实际上它比平时小,我必须使用另一种英文字体,但这会产生问题,我从editText获取getText,检测到urdu 和英文字符,然后使用 spannableStringBuilder 相应地更改字体如下:
if(Arrays.asList(urduCodes).contains(Integer.toHexString(text.charAt(i)).toUpperCase()))
{
System.out.println("different: "+text.charAt(i));
SpannableStringBuilder urduBLD;
urduBLD = new SpannableStringBuilder("");
urduBLD.append(edi.getText().charAt(i));
System.out.println("urduBLD: "+urduBLD);
urduBLD.setSpan(new StyleSpan(urduFont.getStyle()),urduBLD.length(),urduBLD.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
stringBuilder.append(urduBLD);
} else
{
System.out.println(text.charAt(i)+"-Code:"+(int)text.charAt(i)+"-"+Integer.toHexString(text.charAt(i)));
SpannableStringBuilder engBLD;
engBLD = new SpannableStringBuilder("");
engBLD.append(edi.getText().charAt(i));
System.out.println("engBLD: "+engBLD);
engBLD.setSpan(new StyleSpan(englishFont.getStyle()),engBLD.length(),engBLD.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
stringBuilder.append(engBLD);
}
但这并没有解决问题,editText中的文字保持不变,字体没有变化。这可能吗??
【问题讨论】:
-
为什么不使用两个 eidtText 一个用于 urdhu 另一个用于英语@blogger
-
因为在活动中只需要一个 EditText 并且两种语言都应该在同一个 EditText 中
-
@Opiatefuchs 这是正确/正确的 TextView 而不是 EditText,我已经测试过了...
标签: java android mobile fonts typeface