android - 显示大小从系统设置更改影响我的布局奥利奥
问题描述
我希望我的布局始终具有相同的大小和形状,并且之前调整字体比例可以正常工作。现在 android 似乎想出了改变显示尺寸的选项,这让我的整个布局迷失方向。
我尝试过设置大值、大布局并尝试为布局设置正常大小,但没有得到积极的结果。
我还在某个线程中找到了这段代码来帮助我解决问题:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Log.d("TAG", "adjustDisplayScale: " + configuration.densityDpi);
DisplayMetrics metrics = getResources().getDisplayMetrics();
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metrics);
if (configuration.densityDpi >= 485) //for 6 inch device OR for 538 ppi
configuration.densityDpi = 500; //decrease "display size" by ~30
else if (configuration.densityDpi >= 300) //for 5.5 inch device OR for 432 ppi
configuration.densityDpi = 400; //decrease "display size" by ~30
else if (configuration.densityDpi >= 100) //for 4 inch device OR for 233 ppi
configuration.densityDpi = 200; //decrease "display size" by ~30
Log.d("TAG", "metrics density: " + metrics.density + "," + metrics.scaledDensity);
metrics.scaledDensity = configuration.densityDpi * metrics.density;
Log.d("TAG", "scaledDensity: " + metrics.scaledDensity);
this.getResources().updateConfiguration(configuration, metrics);
}
这似乎对我的布局也没有任何好处。它仍然变得巨大而迷失方向。谁能告诉我在不影响我的布局和设计的系统设置的情况下我可以做些什么来保持相同的大小?
解决方案
使用约束布局,如果使用约束布局,则无需创建大和超大布局。最重要的是使用 sp 和 dp。
ex. <dimen name="dm_40sp">40sp</dimen>
sp根据屏幕分辨率自动调整大小。
约束布局比相对布局更容易、更有效。试试这个,如果有任何问题问我。
推荐阅读
- sql - 查询结果不匹配
- sql-server - 如何计算计算成员中的第一个日期?
- javascript - 如何为 gupshup 聊天添加延迟,以便聊天机器人在 5 秒后打开?
- angular - 离子应用程序正在编译并在构建时出现错误
- ajax - 除了 HTTP 之外,还有其他方法可以获取数据吗?
- angular - cb() 在安装 angular/cli 时从未调用错误
- firebase - 如何将图像上传到firebase存储然后将图像url存储在firestore中?
- password-protection - 进入被监视的随机数序列种子
- c# - 为什么在层次结构中选择不同的对象时相机会卡顿?
- javascript - 在 mongoDB 查询中使用字段时显示错误