Try this option :
import java.util.Locale;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.util.DisplayMetrics;
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, AndroidLocalize.class);
startActivity(refresh);
finish();
}
ADDED:
@Override
public void onConfigurationChanged(Configuration newConfig) {
newConfig.setLocale(yourLocale);
super.onConfigurationChanged(newConfig);
}
ADD (2):
You must set android:configChanges="layoutDirection|locale"to invoke onConfigurationChanged()when changing Locale.
I can’t fully understand why this is happening, maybe there are some languages RTL...
source
share