繁体   English   中英

更改Android中应用程序的DisplayMetrics(API级别低于17)

[英]Change DisplayMetrics for application in Android (in API level lower that 17)

我正在开发该应用程序,该应用程序在所有设备上的外观必须相同。 问题是,如果设备具有高分辨率的屏幕(例如1920x1080且密度为320 ),则所有元素都会看起来很小。

在API级别17和更高级别上,我可以使用以下代码来纠正问题:

    DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();

    android.content.res.Configuration config = context.getResources().getConfiguration();
    config.densityDpi = <desired dpi goes here>;
    context.getResources().updateConfiguration(config, displayMetrics);

但是,如果API级别较低,则会引发异常java.lang.NoSuchFieldError: android.content.res.Configuration.densityDpi

因此,我没有在配置中更改densityDpi,而是尝试了以下方法:

    DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();

    android.content.res.Configuration config = context.getResources().getConfiguration();
    displayMetrics.densityDpi = <desired dpi goes here>;
    context.getResources().updateConfiguration(config, displayMetrics);

但是这段代码根本没有效果:(。也许我使用错了?有人可以帮我清除一下吗。

更新:所以,没人知道这件事吗? :/

您只需要像这样更新您的config和displayMetrics。

 DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();

Configuration config = context.getResources().getConfiguration();
displayMetrics.densityDpi = DisplayMetrics.DENSITY_LOW;
config.densityDpi = DisplayMetrics.DENSITY_LOW;

context.getResources().updateConfiguration(config, displayMetrics);

您需要查看package / apps / settings / display settings.Java Font_size部分,它使用Display度量标准来缩放字体属性,但是我认为您需要使用density属性而不是densityDPI

不知道您是否还在寻找答案。 但是尝试一下:

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
Configuration config = context.getResources().getConfiguration();
displayMetrics.densityDpi = DisplayMetrics.DENSITY_LOW;
config.densityDpi = DisplayMetrics.DENSITY_LOW;
displayMetrics.setTo(displayMetrics);
config.setTo(config);
context().getResources().updateConfiguration(config, displayMetrics);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM