diff --git a/android/src/com/mapswithme/maps/base/BaseMwmFragmentActivity.java b/android/src/com/mapswithme/maps/base/BaseMwmFragmentActivity.java index 16ec066706..91c589d9ec 100644 --- a/android/src/com/mapswithme/maps/base/BaseMwmFragmentActivity.java +++ b/android/src/com/mapswithme/maps/base/BaseMwmFragmentActivity.java @@ -21,6 +21,7 @@ import com.mapswithme.maps.MwmApplication; import com.mapswithme.maps.R; import com.mapswithme.maps.SplashActivity; import com.mapswithme.util.Config; +import com.mapswithme.util.RtlUtils; import com.mapswithme.util.ThemeUtils; import com.mapswithme.util.UiUtils; import com.mapswithme.util.Utils; @@ -66,6 +67,7 @@ public abstract class BaseMwmFragmentActivity extends AppCompatActivity protected final void onCreate(@Nullable Bundle savedInstanceState) { mBaseDelegate.onCreate(); + RtlUtils.manageRtl(this); // An intent that was skipped due to core wasn't initialized has to be used // as a target intent for this activity, otherwise all input extras will be lost // in a splash activity loop. diff --git a/android/src/com/mapswithme/util/RtlUtils.java b/android/src/com/mapswithme/util/RtlUtils.java new file mode 100644 index 0000000000..d705de50f4 --- /dev/null +++ b/android/src/com/mapswithme/util/RtlUtils.java @@ -0,0 +1,27 @@ +package com.mapswithme.util; + +import android.app.Activity; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.core.text.TextUtilsCompat; +import androidx.core.view.ViewCompat; + +import java.util.Arrays; +import java.util.List; +import java.util.Locale; + +public class RtlUtils +{ + private final static List rtlLocalesWithTranslation = Arrays.asList("ar", "fa"); + + public static void manageRtl(@NonNull final Activity activity) + { + final String currentLanguage = Locale.getDefault().getLanguage(); + final boolean isRTL = TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) == ViewCompat.LAYOUT_DIRECTION_RTL; + if (isRTL && rtlLocalesWithTranslation.contains(currentLanguage)) + activity.getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); + else + activity.getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_LTR); + } +}