RTL 仅适用于多行

RTL only works with multiple lines

我有一个 Android 应用程序,它可以读取 RSS 提要。我的清单中支持 RTL。当我用 RTL 显示希伯来语/阿拉伯语的 RSS 提要时,发生了一些非凡的事情。


该图像显示了文本视图(列表中)中的文本如何正确对齐占用 2+ 行的长文本,对吧。但是,1 行文本未正确对齐。所有文本都以相同的方式解析并设置到文本视图。

这是我的文本视图样式:

    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:lineSpacingExtra">1dp</item>
    <item name="android:paddingLeft">5dp</item>
    <item name="android:paddingTop">2dp</item>
    <item name="android:maxLines">2</item>
    <item name="android:ellipsize">end</item>
    <item name="android:textColor">@color/dark_gray</item>
    <item name="android:fontFamily">sans-serif-light</item>
    <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>

造成这种差异的原因是什么?我怎样才能确保所有 (hebrew/arab) 文本都正确对齐。

当您使用 layout_widthwrap_content 时,您的视图宽度会根据存在的内容量进行调整。在短字符串的情况下,这意味着视图的右边缘正好位于文本的边缘,而不是绑定到 FrameLayout 的右边缘。这甚至会导致右对齐文本显示为左对齐。

相反,您应该修复 TextView 的两个边缘 - 您已经通过 android:layout_toRightOf 处理了左侧边缘 - 还要添加 android:layout_alignParentRight="true" 以便视图的最右侧边缘将始终对应于 FrameLayout 的最右边缘。

请查看官方 Android 开发者博客 link : http://android-developers.blogspot.in/2013/03/native-rtl-support-in-android-42.html。这应该可以帮助您处理 RTL。同样对于textview,如果你需要文本从一个特定的方向开始(左或右不同的模式),你可以使用textAlignment 属性 并将其设置为viewStart。希望这有帮助。