Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从系统设置更改的显示大小影响我的布局Oreo_Android_User Interface_Layout_Orientation_Display - Fatal编程技术网

Android 从系统设置更改的显示大小影响我的布局Oreo

Android 从系统设置更改的显示大小影响我的布局Oreo,android,user-interface,layout,orientation,display,Android,User Interface,Layout,Orientation,Display,我希望我的布局始终保持相同的大小和形状,之前调整字体比例的效果很好。现在安卓似乎已经想出了改变显示尺寸的选项,这让我的整个布局失去了方向感 我尝试过使一个值变大,布局变大,并尝试将正常大小设置为布局,但没有积极的结果 我还在一些线程中发现了以下代码,以帮助我解决问题: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { Log.d("TAG", "adjustDisplayScale: " +

我希望我的布局始终保持相同的大小和形状,之前调整字体比例的效果很好。现在安卓似乎已经想出了改变显示尺寸的选项,这让我的整个布局失去了方向感

我尝试过使一个值变大,布局变大,并尝试将正常大小设置为布局,但没有积极的结果

我还在一些线程中发现了以下代码,以帮助我解决问题:

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);
    }

这似乎对我的布局也没有任何好处。它仍然变得巨大和迷失方向。有谁能告诉我,在系统设置不影响布局和设计的情况下,如何始终保持相同的大小?

使用constraint layout,如果使用constraint layout,则无需创建大型和xlarge布局。最重要的是使用sp和dp

ex. <dimen name="dm_40sp">40sp</dimen>
ex.40sp
Sp根据屏幕分辨率自动调整大小

约束布局比相对布局更简单、更有效。
如果有任何疑问,请尝试这个。

这不是您想要的答案,但我还是想分享我的看法

首先,这些设置是有原因的。这是无障碍性。残疾人或有困难的人使用该设置根据他们的需要调整UI。所以你根本不应该找到克服这些设置的方法

此外,如果你没有,你应该阅读。它将让您了解系统何时选择哪个布局

但是如果您根本不在乎,那么对于字体大小,如果您使用
dp
而不是
sp
,它们将不受系统设置的影响。对于缩放级别,没有配方。您需要像示例代码中那样欺骗系统,并将更新的配置附加到应用程序级别和活动级别。我觉得你根本不应该尝试做任何事情,用户的意愿是增加字体大小和缩放级别,就让他们自己去吧:)


毕竟,如果你的用户界面被这些设置破坏了,这意味着你的用户界面不是自适应的或响应性的,你应该更新你的用户界面,而不是试图禁用这些设置

感谢您的输入,但我的布局是基于约束布局的。这是一个复杂的布局,所以我负担不起设备来改变我的布局,因为系统设置。许多应用程序不会受到系统设置更改的影响。所以,我想让我的应用程序的UI就是这样。