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:
O, si tiene minAPI 17 o superior, puede usar esto:
val isLeftToRight=TextUtils.getLayoutDirectionFromLocale(Locale.getDefault())==View.LAYOUT_DIRECTION_LTR
Docs:
Gr, googlear un poco más y lo habría encontrado antes de publicar:
if (ViewCompat.getLayoutDirection(getView()) == ViewCompat.LAYOUT_DIRECTION_LTR) {
// ...
}
else {
// ...
}
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.
Sí, use la función Bidi.getBaseLevel (), devolverá 0 para izquierda a derecha y 1 para derecha a izquierda.
http://developer.android.com/reference/java/text/Bidi.html#getBaseLevel()
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.