699
技術社區[雲棲]
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