studio programacion herramientas fundamentos con avanzado aplicaciones android right-to-left

programacion - manual de android en pdf



Android determina si el dispositivo está en lenguaje/diseño de derecha a izquierda (6)

Código Kotlin para detectar la dirección del diseño de la aplicación:

val config = resources.configuration if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { if (config.layoutDirection == View.LAYOUT_DIRECTION_LTR) { // showAlertMsg("LTR") } else { // showAlertMsg( "RTL") } } else { //TODO("VERSION.SDK_INT < JELLY_BEAN_MR1") }

¿Hay una manera de determinar si el dispositivo está en un idioma de derecha a izquierda (algo como el árabe) en lugar de algo de izquierda a derecha (inglés)?

Es necesario algo compatible con los niveles de API más antiguos (hasta 10)

SOLUCIÓN

Terminé usando el método xml en la respuesta aceptada. Más abajo en la línea, también agregué el código indicado aquí para los casos en los que no tuve acceso a getResources ()

Identificando el lenguaje RTL en Android

más información

Esta pregunta todavía recibe mucho tráfico; otra cosa que quería señalar: cuando pedí esto originalmente, creo que fue en parte para ayudar a resolver diferentes ldrtl en RTL frente a LTR (otra forma sencilla de lograr esto es colocando recursos ldrtl directorios estándar y ldrtl ) significa que no se requiere código para determinar cuál mostrar!


Creo que esta es una manera mejor:

val isLeftToRight = TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) == ViewCompat.LAYOUT_DIRECTION_LTR

Docs:

https://developer.android.com/reference/android/support/v4/text/TextUtilsCompat.html#getLayoutDirectionFromLocale(java.util.Locale)

O, si tiene minAPI 17 o superior, puede usar esto:

val isLeftToRight=TextUtils.getLayoutDirectionFromLocale(Locale.getDefault())==View.LAYOUT_DIRECTION_LTR

Docs:

https://developer.android.com/reference/android/text/TextUtils.html#getLayoutDirectionFromLocale(java.util.Locale)



Podría crear una carpeta de valores-ldrtl con un archivo xml llamado isrighttoleft.xml:

<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="is_right_to_left">true</bool> </resources>

y en tu carpeta de valores el mismo archivo con:

<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="is_right_to_left">false</bool> </resources>

Y finalmente en Código:

boolean isRightToLeft = getResources().getBoolean(R.bool.is_right_to_left);

Los valores-ldrtl solo se utilizarán en un dispositivo en el que las configuraciones específicas (por ejemplo, Idioma) sean de lectura de derecha a izquierda.



Si aún se está obteniendo un tráfico considerable, las personas también deberían considerar Configuration.getLayoutDirection (), para API 17+. Devolverá LayoutDirection.LTR o LayoutDirection.RTL. Imagino que ViewCompat.getLayoutDirection (android.view.View) devuelve la dirección que se usó realmente para diseñar una vista particular. Si estás haciendo algo extraño, como intentar determinar qué persona debería estar en qué lado de la pantalla de chat (como yo), esto podría ser útil.