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

Change size of elements after change language

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

当您启动APP时,所有尺寸都很好:

似乎是从我为这个尺寸制作的 drawable-sw280-720x1280 文件夹中取出图像(黑色边框)。文字大小取自values-sw280-720x1280文件夹。

APP中的select英文语言选项后,似乎从drawable-sw299dp-720x1280中获取图像(同名图像,但颜色为黄色)和values-sw280-720x1280中的值文件夹:

问题是当我再次 select 西班牙语时。如您所见,第一种情况似乎是从 drawable-sw280-720x1280 文件夹中获取图像,但文本尺寸较小:

我试过以下方法:

1- 只有一个文件夹用于可绘制对象和值。

2- 为可绘制对象和值创建文件夹 sw-299-720x1280。

3- 为可绘制对象和值创建文件夹 sw-280-720x1280。

4- 为可绘制对象和值创建文件夹 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 中。

终于找到解决办法了。问题是 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);