Cambiar el idioma del elemento navigationdrawer
En mi aplicación de Android quiero cambiar el fragmento de forma de idioma.Mi aplicación contiene MainActivity.java. Esta actividad contiene un cajón de navegación y un fragmento. Cuando cambio mi locale de fragmento, el lenguaje se cambia cada lugar pero no en el cajón de navegación. Estoy usando el código
private String setLocal() { Locale locale; Resources res = getResources(); DisplayMetrics dm = res.getDisplayMetrics(); Configuration conf = res.getConfiguration(); prefs = getActivity().getSharedPreferences("Language", 0); String restoredText = prefs.getString("language", ""); if (restoredText.equalsIgnoreCase("fr_FR")) locale = new Locale("fr"); else locale = new Locale("en"); Locale.setDefault(locale); conf = new Configuration(); res.updateConfiguration(conf, dm); return restoredText; }
Cuando selecciono inglés obtengo el siguiente resultado
- Cajón de navegación siempre visible (un poco)
- Establecer el margen de arrastre para el Cajón de navegación Android
- Retardo de cajón de navegación en Android
- No muestre la superposición con el Cajón de navegación de Android
- Adición de un diseño lineal al cajón de navegación (termina chocando con un ClassCastException)
Después de cambiar el lenguaje, consigo éste
Aquí es el archivo de cadena del directorio de valores-fr
<string-array name="nav_drawer_titles"> <item>Accueil</item> <item>Profil</item> <item>courses</item> <item>Tarification</item> <item>Configuration</item> <item>Envoyez à un ami</item> <item>Facture</item> <item>Position du Chaufeur</item> <item>Aide</item> <item>Déconnexion</item> </string-array>
Y aquí desde la carpeta de valores
<!-- Nav Drawer Menu Items --> <string-array name="nav_drawer_titles"> <item>Home</item> <item>Profile</item> <item>Ride Log</item> <item>Invoice</item> <item>Track Chauffeur</item> <item>Language</item> <item>Refer To Friend</item> <item>Help</item> <item>Sign Out</item> </string-array>
Y mi navigationdrawerfragnet es
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { title = getResources().getStringArray(R.array.nav_drawer_titles); images = getResources().getStringArray(R.array.nav_drawer_icons); mDrawerListView = (ListView) inflater.inflate( R.layout.fragment_navigation_drawer, container, false); mDrawerListView .setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { selectItem(position); } }); selectedposition = new int[] { mCurrentSelectedPosition }; drawerAdapter = new CustomDrawerAdapter(getActivity(), title, images, selectedposition); mDrawerListView.setItemChecked(mCurrentSelectedPosition, true); mDrawerListView.setAdapter(drawerAdapter); return mDrawerListView; }
Im MainActivity.java
@Override public boolean onPrepareOptionsMenu(Menu menu) { // TODO Auto-generated method stub super.onPrepareOptionsMenu(menu); invalidateOptionsMenu(); setLocal(); return super.onPrepareOptionsMenu(menu); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); setLocal(); invalidateOptionsMenu(); }
- Determinar si el NavigationDrawer está abriendo o cerrando
- Icono de desplazamiento de la bandeja de navegación de Android a la derecha
- Abra el cajón de navegación haciendo clic en el icono de la aplicación
- ActionBarDrawerToggle no está configurando el Indicador de cajón
- Elemento seleccionado en el cajón de navegación
- ¿Cómo puedo añadir un elemento personalizado a un NavigationView con un diseño de menú?
- LinearLayout $ LayoutParams no se puede convertir en android.support.v4.widget.DrawerLayout $ LayoutParams
- El gaviota de navegación de Android no pasa onTouchEvent a la actividad
Debe establecer el entorno local en la actividad del cajón antes de setContentView(int resId)
.
También en el método onResume()
puedes recitar tu actividad con API_LEVEL >= 11
llamar a super.recreate()
y debajo de 11
puedes establecer onCreate(null)
.
Comprueba esto
title = getResources().getStringArray(R.array.nav_drawer_titles); images = getResources().getStringArray(R.array.nav_drawer_icons); mDrawerListView .setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { selectItem(position); } }); selectedposition = new int[] { mCurrentSelectedPosition }; drawerAdapter = new CustomDrawerAdapter(getActivity(), title, images, selectedposition); mDrawerListView.setItemChecked(mCurrentSelectedPosition, true); mDrawerListView.setAdapter(drawerAdapter);
Usted necesita empujar allí la línea en su método del setLocal para invalidar la lista del cajón
- Referencia débil para la llamada de red mala idea?
- Robolectric: 3.3.2 – Ningún fichero de manifiesto: build \ intermedios \ manifestos \ lleno \ debug \ src \ main \ AndroidManifest.xml