閱讀699 返回首頁    go 技術社區[雲棲]


Android 4.2原生支持從右到左的文字排列格式

轉自 https://www.importnew.com/3517.html



Android 4.1(Jelly Bean)  在 TextView EditText 元素裏對“雙向文字順序”提供了有限的功能支持,允許應用程序在編輯和顯示字符的時候,能夠同時支持從左到右(LTR)以及從右到左(RTL)的排列格式。Android 4.2目前已經對“從右到左”的文字排列順序給予了原生級別的全麵支持,包括提供了一個布局鏡麵工具,使得開發者把能夠將優質的用戶體驗帶給每一位用戶,不管該用戶的書寫順序是從左到右,還是從右到左。

Android 4.2保證了該新特性不會影響到目前已經存在程序,如果之前的程序代碼不修改,其應用的外觀將維持現狀。如果你想要修改程序,那麼僅僅需要很小的改動,應用就可以自動地被“鏡麵反射”,這樣就能輕易地將係統語言設置為從右到左的書寫格式(阿拉伯語,希伯來語和波斯語都采用這種格式)。例如,下麵的截圖就展示了上述的設置效果:

從左到右的布局方式從左到右的布局方式

 

從右到左的布局方式從右到左的布局方式

 

要實現RTL(從右到左)的布局鏡麵反射,僅僅需要遵循下列步驟就可以做到:

1. 在你的應用程序聲明文件(manifest)裏聲明開啟RTL mirroring的支持。具體做法是:在manifest.xml聲明文件的<application>元素中,添加 android:supportsRtl=”true”

2. 修改應用程序中所有的“left/right”布局屬性,改為對應的”start/end”布局

1)如果你的應用程序是針對Android 4.2目標平台(應用的targetSdkVersion或者minSdkVersion是17或者更高), 那麼你就應當用“start”和“end”替換原來的“left”和“right”。例如,android:paddingLeft應當被替換為android:paddingStart。

2)  如果你想讓你的應用程序與Android 4.2之前的版本保持兼容(也就是與targetSdkVersion或者minSdkVersion為16或者更早的版本),那麼你應當既加上“start”和“end”,又加上“left”和“right”。例如,你應當同時寫上:adnroid:paddingLeft和android:paddingStart。

 

為了更精確地控製應用程序在UI上的文字書寫順序(從左到右,或者從右到左),Android 4.2 引入了如下的API:

android:layoutDirection —該屬性設置組件的布局排列方向

android:textDirection — 該屬性設置組件的文字排列方向

android:textAlignment — 該屬性設置文字的對齊方式

getLayoutDirectionFromLocale() —該方法用於獲取指定地區的慣用布局方式

在使用從右到左的排列方式時,你甚至創建自定義的布局方式,可繪製對象,以及其他資源。僅僅是簡單地使用資源匹配器“ldrtl”對你的資源進行一下標識,你就可以把資源定義為“從右到左方向的資源”。在調試和優化從右到左的布局方麵,HierarchyViewer目前支持對start/end屬性,布局方向,文字方向,文字對齊方式等所有信息的層次化顯示。

那麼現在是時候為所有的用戶開發優美的Android應用程序了,無論用戶的文字語言習慣是從左到右,還是從右到左。我們非常期待看到這些優美應用的產生!

 



最後更新:2017-04-03 07:57:10

  上一篇:go 中斷處理程序不能使用printf的本質
  下一篇:go Android中EditText點擊獲得焦點後無法顯示輸入法鍵盤