2015-10-14 42 views
4

這是我第一次用RTL語言(希伯來語)開發應用程序。我一直在逆轉角色的兩天掙扎。在Android模擬器中反轉的從右到左的字符

我的字符串XML:

<resources> 
    <string name="app_name">SomeApp</string> 

    <string name="hello_world">מה המצב?</string> 
    <string name="action_settings">Settings</string> 
</resources> 

隨着我要創建將使用此字符串一個TextView字符串hello_world。結果應該是:

מההמצב

但是模擬器顯示:

emulator

正如你可以看到它不僅改變了句子和問題的順序標記。它也改變了字母的順序。

事情我至今嘗試過:

  1. API級別20以上。有些地方暗示這個問題在4.2版之後是固定的。
  2. 在句子的開始或結尾或兩個句子中使用標記\u200F
  3. ",.?!等各個特殊字符後使用\u200e當我在希伯來語寫的沒有特殊字符在所有的一切工作正常。

activity_my.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent" 
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MyActivity" 
android:id="@+id/StudentLife"> 

<TextView android:text="@string/hello_world"    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" /> 

    </RelativeLayout> 

我搜索周圍,但沒有什麼工作,也許我錯過了什麼。

+0

該屏幕截圖顯示的不是模擬器,而是Android Studio的可視化佈局管理器。你是否在模擬器中啓動了你的應用程序? –

回答

2

該屏幕截圖顯示的不是模擬器,而是Android Studio的可視化佈局管理器。這似乎是佈局管理器中的一個奇怪的錯誤,但它不會影響應用程序 - 無論是在仿真器上還是在真實設備上。

你說得對,Android 4.2之前的RTL支持並不標準化,有些設備可能會以一種奇怪的方式執行。但即使2.3.3的模擬器也不會爲我恢復希伯來字母。

那麼,它不把?在左邊,你需要追加\u200F治癒這一點。但對於4.2和更高版本,您可以指定android:textDirection="rtl"而不是標記。

+1

發現「封閉」[問題](https://code.google.com/p/android/issues/detail?id=57667)。他們似乎只用希伯來字符來固定這個例子,但是當**'?'**出現時就不會這樣。 –