支持 RTL 语言的 Android Justify 可跨文本视图
Posted
技术标签:
【中文标题】支持 RTL 语言的 Android Justify 可跨文本视图【英文标题】:Android Justify spanable Text-view that support RTL Languages 【发布时间】:2015-10-18 22:33:42 【问题描述】:我需要在android中创建一个自定义的text-view,首先它应该是justified,然后它应该支持spans和虽然它应该支持 RTL(从右到左)语言,例如:波斯语(波斯语),...
我正在研究这个问题一周!但事实上我陷入了糟糕的境地,因为没有可用的库支持所有这些条件(Justify、Spanable、RTL)
你有什么想法?!
我虽然检查了很多库,例如:Link
【问题讨论】:
我也有同样的问题! 属性“android:textDirection”可用,但只能在API级别17或以上使用。Here is the link 嗨哈米德 - 试试看:github.com/Saleh-Hassan/RTL-TextJustify-Android 嗨 Saeid - 这个库不支持 Span 对于跨度检查我的答案 【参考方案1】:此代码适用于我的 rtl textView :
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
textView.setJustificationMode(LineBreaker.JUSTIFICATION_MODE_INTER_WORD);
else
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
textView.setGravity(Gravity.CENTER_HORIZONTAL);
【讨论】:
【参考方案2】:您也许可以使用this。
该包是专门为 Right-ToLeft 和 Justified Textviews 创建的,并且应该支持 Spannable,因为它是 TextView 的扩展。
【讨论】:
【参考方案3】:如何证明 span RTL TextView
的合理性?
首先使用这个库RTL-TextJustify-Android
然后在将文本设置为TextView
之前:
TextViewEx = myJustifiedTextView;
myJustifiedTextView = findViewById...........;
finalDescription = "";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
finalDescription = html.fromHtml(SpanTextHere, Html.FROM_HTML_MODE_COMPACT).toString();
else
finalDescription = Html.fromHtml(SpanTextHere).toString();
myJustifiedTextView.setText(finalDescription,true);
【讨论】:
【参考方案4】:尝试将android:supportsRtl="true"
添加到清单文件中的<application>
元素,并将您的应用“左/右”布局属性更改为新的“开始/结束”。
请参阅this 链接了解更多信息。
【讨论】:
以上是关于支持 RTL 语言的 Android Justify 可跨文本视图的主要内容,如果未能解决你的问题,请参考以下文章
Android rtl viewpager with rtl tablayout
React-native 支持 RTL 和 LTR,无需更改设备语言
在 TextView 中使用区域设置 (ltr/rtl) 作为重力
使用 android:supportsRTL="true" 时禁用自动更改布局方向