我正在制作一个包含英语和希伯来语(用于从右到左)文本的布局,在不同的视图中。当一行希伯来文本超出一定长度时,它会从左到右书写(我认为这与长度有关,因为它看起来很好用较短的文字,当我在平板电脑而不是手机上显示它时)。 相关视图如下所示:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:gravity="center"
android:textDirection="rtl"
android:text="@string/tx_middle_text"
android:textSize="@dimen/big_text_dp" />
,字符串在strings.xml中定义,如下所示:
<string name="tx_middle_text">טקסט בעברית</string>
(我已经替换了原始文本,长度为50个字符,完全由希伯来字母和白色空格组成。)
请注意,文本具有rtl属性。我尝试用anyRtl替换它,我尝试将重力改为“正确” - 两者都没有帮助
我需要将文本保留在一行中并且如果不适合则用省略号剪切 - 就像它一样,这就是发生的事情,但文本是从左到右书写的。
我该如何解决这个问题?
编辑:对于临时解决方案,我将较短的字符串作为较小布局的替代资源(只要文本在给定设备上的长度小于一行,它就可以工作),但我仍然喜欢知道是否有一般的解决方案。
答案 0 :(得分:1)
系统会根据字符自动检测RTL。即对于阿拉伯字符,文本将从右到左绘制。
这是关于如何绘制我的微调器的示例。对于此TextView:
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/spinner_item"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="15sp"
android:gravity="center_vertical|start"
android:textColor="@color/spinner_filter_text"
android:ellipsize="end"
android:singleLine="true"
android:paddingStart="20dp"
android:paddingEnd="20dp"/>
这些字符串:
<string name="all_categories">All Categories</string>
(值)
结果是:
如果我用:
修改TextViewandroid:layout_width="100dp"
结果是:
我觉得很好......请注意,在strings.xml中,ar语言的字符串方向是错误的,但Android正在正确绘制它。我想这是因为一些Android Studio设置。
答案 1 :(得分:0)
将android:singleLine="true"
替换为
android:lines="1"
android:maxLines="1"
还添加android:ellipsize="end"