tutorial - Android: Cambie las instrucciones de diseño de la aplicación mediante programación
sesiones en android studio (4)
¿Cómo puedo cambiar la dirección completa del diseño de la aplicación a RTL? Estoy escribiendo una aplicación en la que el usuario debe seleccionar su idioma en el primer lanzamiento y el diseño debe cambiar en función de la selección del usuario a RTL o sigue siendo LTR. Solía agregar android:supportsRtl="true"
a AndroidManifest
y android:layoutDirection="rtl"
para cada diseño, pero este enfoque tiene algunos problemas, como a continuación:
Un problema es que cuando cambio la dirección a RTL, el ActionBar
inicio de la ActionBar
o el botón de navegación (cuando está habilitado como inicio) permanece LRT y solo se desplaza hacia la derecha.
También intenté cambiar de dirección programáticamente y el resultado fue el mismo:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){
getWindows().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
}
¿Hay alguna forma de obligar a todas las actividades a convertirse en RTL a la vez o debemos establecer la dirección en cada actividad por separado?
Cambiar todo el diseño.
LinearLayout linrtl=(LinearLayout)findViewById(R.id.linrtl);
linrtl.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
El botón Atrás permanece en modo LTR, porque solo tiene un recurso, que es una flecha que apunta a la izquierda. Debe especificar una nueva carpeta de recursos, por ejemplo, drawable-ldrtl-hdpi y colocar el mismo icono que apunta directamente a esta carpeta.
Puede usar este fragmento de código mientras minSdk> = 17 de su aplicación.
fa
para Farsi
, puedes usar otro lenguaje rtl.
Configuration configuration = getResources().getConfiguration();
configuration.setLayoutDirection(new Locale("fa"));
getResources().updateConfiguration(configuration, getResources().getDisplayMetrics());
También tengo este problema, me parece que si el ancho de su vista establece MATCH_PARENT
, debe establecer la gravedad de la vista con Gravity.LEFT
en el modelo LTR y la gravedad de la vista con Gravity.RIGHT
en el modelo RTL.