I'm trying to add RTL language support in my app (specifically Arabic right now). I'll be supporting English as well. What I've done:
- Set minSdkVersion to 17
- Added
android:supportsRtl="true"
to my application tag inAndroidManifest.xml
- Switched my left/right attributes to start/end
At first I made these changes manually, then I used Android Studio's "Refactor -> Add RTL Support Where Possible..." menu item.
When I preview my layout files, I can see the RTL preview is properly mirroring the UI; however, even when I use the "Force RTL Layout Direction", my app doesn't display the RTL layout. The system UI is flipped, so that option does work in general.
Is there anything else I need to do to show the RTL layout? I'm hoping I have missed something obvious. I am testing this on an API 21 emulator.
Update
I inherited some of this code. Something might be overriding a setting and forcing this into LTR mode. I made a test application to test out RTL mode and it worked fine. What sort of code could cause the "Force RTL Layout Direction" setting to be ignored (or be overridden)?
Update 2
I've checked that the locale is being set properly, and it is. I also checked the configuration, and ldrtl
is set. I verified in the signed apk file that android:supportsRtl
made it in and none of the layout files had android:layoutDirection="ltr"
. I've even tried manually putting android:layoutDirection="rtl"
to try to force a layout to mirror, but that didn't work either.`
Update 3
I added another activity to the project, made it the launcher activity, and made sure it isn't connected to any existing code. It is a subclass of Activity
. The issue still exists. So theoretically this is a configuration issue. Like I said I checked the AndroidManifest.xml file and all the layout files that are generated, and the RTL support and layout changes all made it in. What could be going wrong with configuration?