我正在尝试混合使用希伯来语和普通文本,文本来自SQLite数据库,并显示在listview中,该列表视图从Assets文件夹中的数据库中提取。
我想显示以下内容:
'אנאאנא - Ek是,是的,我们是Wie Ek,是,sal wees。“
但它显示为:
“.Ek是,是的,我们是Wie Ek,是,sal wees - אנאאנא'
当希伯来语文本介于其他普通文本之间时,它很好:
'他说אנאאנא - 我,是,我将是谁,是,将来。“
当listview项目以希伯来语开头时,文本才会混淆。
我试过了:
'< \ U + 200f>אנאאנא< \ U + 200f> - Ek是,是的,我觉得Wie Ek,是,sal wees。“
'< \ U200f>אנאאנא< \ U200f> - Ek是,是的,我觉得Wie Ek,是,sal wees。“
'\ U200fאנאאנא\ U200f - Ek is,was we wees Wie Ek is,was,sal wees。“
'(\ U200f)אנאאנא(\ U200f) - Ek是,是的,我觉得Wie Ek,是,sal wees。“
'< \ U + 202b>אנאאנא< \ U + 202b> - Ek是,是的,我觉得Wie Ek,是,sal wees。“
'< \ U202b>אנאאנא< \ U202b> - Ek是,是的,我觉得Wie Ek,是,sal wees。“
'\ U202bאנאאנא\ U202b - Ek is,was,sal wees Wie Ek is,was,sal wees。“
'(\ U202b)אנאאנא(\ U202b) - Ek is,was,sal wees Wie Ek is,was,sal wees。“
'< \ U + 202e>אנאאנא< \ U + 202e> - Ek是,是的,我觉得Wie Ek,是,sal wees。“
'< \ U202e>אנאאנא< \ U202e> - Ek是,是的,我觉得Wie Ek,是,sal wees。“
'\ U202eאנאאנא\ U202e - Ek是,是的,我们是Wie Ek,是,sal wees。“
'(\ U202e)אנאאנא(\ U202e) - Ek is,was,sal wees Wie Ek is,was,sal wees。“
但所有内容都会显示如下代码: (我不想看代码)
'< \ U + 200f>אנאאנא< \ U + 200f> - Ek是,是的,我觉得Wie Ek,是,sal wees。“
我已经在清单中尝试了android:supportsRtl =“true”,这只会影响我案例中的文本分配,而不会影响文本。
答案 0 :(得分:2)
问题是您在同一个字符串中混合了rtl和ltr文本。系统查看要显示的字符串,并看到它以希伯来语开头。所以它在RTL模式下启动它。然后看到英文文本。所以它切换到LTR。结果就是你所看到的。在混合这样的语言时,您需要输入显式的unicode ltr和rtl标记,以确保正确处理它。有关ltr标记的信息,请参阅https://en.wikipedia.org/wiki/Left-to-right_mark。
答案 1 :(得分:1)
...的sooo 这最终对我有用....
textview.setTextDirection(View.TEXT_DIRECTION_LTR);
请注意我的问题就像我说的那样,我正在从数据库中读取数据并且没有显示字符串,所以这段代码强制从左到右读取所有数据,如果我不使用这一行,它会选择希伯来字符作为RTL文本,并希望将整个结果显示为RTL。
感谢所有的帮助!我有很多阅读和学习过程!
答案 2 :(得分:0)
在这里看到答案......
我正在使用\ u200e从右到左
将你的字符串带入string.xml
<string name="Yourstring">\u200e שלום</string>
TextView text2=(TextView)findViewById(R.id.text2);
String str= getResources().getString(R.string.Yourstring)+" is the same as hello";
text2.setText(str);
您想要的结果
如果你想要数据库你想要的我想添加一些带有数组数据的demo你可以做这些类型与数据库值一起工作
String[] str_array={"שלום is the same as hello","שלום is the same as hello","שלום is the same as hello","שלום is the same as hello"};
TextView text1=(TextView)findViewById(R.id.text1);
TextView text2=(TextView)findViewById(R.id.text2);
TextView text3=(TextView)findViewById(R.id.text3);
TextView text4=(TextView)findViewById(R.id.text4);
String str="";
for(int i=0;i<str_array.length;i++)
{
if(i==0)
{
// before text you want than do this
text1.setText(str.concat("\u200e")+str_array[i]);
}
else if(i==1)
{
// add this for end of string
text2.setText(str_array[i].concat("\u200e"));
}
else if(i==2)
{
// before text you want than do this
text3.setText(str.concat("\u200e")+str_array[i]);
}
else if(i==3)
{
// before text you want than do this
text4.setText(str.concat("\u200e")+str_array[i]);
}
}
结果
答案 3 :(得分:-1)
android:supportsRtl="true"
意味着您希望从右到左支持阿拉伯语,希伯来语语言。这是从RTL开始从右到左,当系统得到语言是希伯来语时,它从右边开始。根据我的建议你需要定义你真的需要在你的应用程序中支持RTL。否则请设置android:supportsRtl="false"
,使其从左到右开始。