支持 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(从右到左)语言,例如:波斯语(波斯语),...

我正在研究这个问题一周!但事实上我陷入了糟糕的境地,因为没有可用的库支持所有这些条件(JustifySpanableRTL

你有什么想法?!


我虽然检查了很多库,例如: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" 时禁用自动更改布局方向

使用 2 个不同的故事板,一个用于 LTR,一个用于 RTL(非自动布局)

我如何为 Android 和 QT 创建者使用 RTL SDR 库?