当我在ZTE Blade Flex(720 x 1280 299ppp)中更改APP的语言时遇到问题。
似乎从我为此尺寸制作的drawable-sw280-720x1280文件夹中拍摄图像(黑色边框)。文本大小取自值-sw280-720x1280文件夹。
在APP中选择英语语言选项后,似乎从drawable-sw299dp-720x1280(同名图像但是黄色)和值-sw280-720x1280文件夹中取值:
问题是当我再次选择西班牙语时。正如您所看到的,似乎从drawable-sw280-720x1280文件夹中获取图像,作为第一种情况,但文本的大小更小:
我尝试了以下内容:
1-只有一个可绘制和值的文件夹。
2-为drawable和values创建一个文件夹sw-299-720x1280。
3-为drawable和values创建一个sw-280-720x1280文件夹。
4-为drawable和values创建一个文件夹hdpi和xhdpi。当我尝试这个时,第一次APP从xhdpi获取图像,在更改为英语后,它从hdpi获取图像。
最后,改变我正在做的语言:
final Configuration config = new Configuration();
if (checkedId == R.id.idRbIdiomaEn) {
config.locale = Locale.ENGLISH;
} else if (checkedId == R.id.idRbIdiomaEs) {
config.locale = new Locale("es", "ES");
}
Intent i = new Intent(getActivity(), MainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION|Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
dialog.dismiss();
startActivity(i);
getActivity().finish();
- 我已检查错误仅出现在Android Lollipop中。
答案 0 :(得分:0)
最后我找到了解决方案。问题是APP在改变成语后引入了新的规模。灵魂是:
Configuration configuration = getResources().getConfiguration();
configuration.fontScale=(float) 1; //0.85 small size, 1 normal size, 1,15 big etc
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.fontScale * metrics.density;
getBaseContext().getResources().updateConfiguration(configuration, metrics);