更改语言后更改元素的大小

时间:2017-03-31 09:11:29

标签: android resize drawable idioms

当我在ZTE Blade Flex(720 x 1280 299ppp)中更改APP的语言时遇到问题。

启动APP时,所有尺寸都很好: enter image description here

似乎从我为此尺寸制作的drawable-sw280-720x1280文件夹中拍摄图像(黑色边框)。文本大小取自值-sw280-720x1280文件夹。

在APP中选择英语语言选项后,似乎从drawable-sw299dp-720x1280(同名图像但是黄色)和值-sw280-720x1280文件夹中取值: enter image description here

问题是当我再次选择西班牙语时。正如您所看到的,似乎从drawable-sw280-720x1280文件夹中获取图像,作为第一种情况,但文本的大小更小: enter image description here

我尝试了以下内容:

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中。

1 个答案:

答案 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);