[英]Android AlertDialog setOnDismissListener for API lower than 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.