
hey what’s up ضعيف
我可以根据语言应用typeface span,但它需要在从我们的服务器获取的每个字符串中自定义标记,例如
<ttf1>hey what's up <ttf1><ttf2>ضعيف</ttf2>
并且在运行时解析每个String将会影响性能.有没有其他方法来实现这一目标?
首先,我想说我需要这样做只是为了文本的方向,即RTL和LTR所以在上面的例子中,英语是LTR而阿拉伯语是RTL.这有什么不同吗?
我尝试合并这两个字体文件,但有线高问题,如果我修复一个字体文件,它会被破坏其他文件.
解决方法 在某人的帮助下,我找到了比手动标记更优雅的解决方案:String paragraph = "hey what's up ضعيف";int NO_FLAG = 0;BIDi bIDi = new BIDi(paragraph,NO_FLAG);int runcount = bIDi.getruncount();for (int i = 0; i < runcount; i++) { String ltrtl = bIDi.getRunLevel(i) % 2 == 0 ? "ltr" : "rtl"; String subString = paragraph.substring(bIDi.getRunStart(i),bIDi.getRunlimit(i)); Log.d(">>bIDi:" + i,subString+" is "+ltrtl);} 打印:
hey what’s up is ltr
ضعيف is rtl
所以现在可以根据语言方向轻松构建TypefaceSpan或MetricAffectingSpan,如下所示:
SpannableString spanString = new SpannableString(paragraph);for (int i = 0; i < runcount; i++) { Object span = bIDi.getRunLevel(i) % 2 == 0 ? ltrFontSpan : rtlFontSpan; spanString.setSpan(span,bIDi.getRunStart(i),bIDi.getRunlimit(i),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); }textVIEw.setText(spanString); 总结 以上是内存溢出为你收集整理的android – 基于String内语言的TextView自定义字体全部内容,希望文章能够帮你解决android – 基于String内语言的TextView自定义字体所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)