公式の回避策があるかどうかはわかりませんので、ハックを実装しました。
gradle.build
これをファイルの最後に追加しました
String targetRTLDir = "res/layout-ldrtl"
task copyTask(type: Copy) {
delete fileTree(dir: targetRTLDir)
from 'res/layout'
into targetRTLDir
filter { String line -> line.replaceAll('Right', 'RTL_R') }
filter { String line -> line.replaceAll('Left', 'Right') }
filter { String line -> line.replaceAll('RTL_R', 'Left') }
filter { String line -> line.replaceAll('android:layout_gravity="right"', 'android:layout_gravity="rtl_r"') }
filter { String line -> line.replaceAll('android:layout_gravity="left"', 'android:layout_gravity="right"') }
filter { String line -> line.replaceAll('android:layout_gravity="rtl_r"', 'android:layout_gravity="left"') }
filter { String line -> line.replaceAll('android:gravity="right"', 'android:gravity="rtl_r"') }
filter { String line -> line.replaceAll('android:gravity="left"', 'android:gravity="right"') }
filter { String line -> line.replaceAll('android:gravity="rtl_r"', 'android:gravity="left"') }
filter { String line -> line.replaceAll('android:gravity="start"', 'android:gravity="right"') }
filter { String line -> line.replaceAll('android:gravity="end"', 'android:gravity="left"') }
}
preBuild.dependsOn('copyTask')
それが行うことは、すべてのファイルを からlayout
にコピーし、とlayout-ldrtl
をすべて交換するだけです。left
right
必要に応じて、すべてleft
とright
を置き換えてフォルダーに配置することもできますが、機能しないため、これがよりうまく機能することがわかりました!start
end
layout-v17
android:gravity="start"
私はかなり初心者なGradle
ので、もっと簡単なスクリプトでこれを行うことができればすみません:)