如果设置 - >显示 - >显示大小更改为大或小,则禁用应用或活动缩放

问题描述 投票:0回答:2

在我的应用程序中,我不想让它在创建设计问题时调整大小。

我已尝试在应用程序标记和启动器活动标记中使用android:resizeableActivity="false",但它没有帮助。

android android-manifest android-settings
2个回答
3
投票

我找到了解决方案。

如果系统文本大小已更改或“显示大小”设置为“大”(Android Oreo以上),则您的应用将按正常行为(无大文本和缩放视图),代码如下:

        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;
        configuration.densityDpi = (int) getResources().getDisplayMetrics().xdpi;
        getBaseContext().getResources().updateConfiguration(configuration, metrics);

0
投票

如果用户在手机上更改关于UI大小的辅助功能选项,我会假设您正在尝试显示不会改变的显示。

您可以使用DisplayMetrics来实现此功能。

DisplayMetrics metrics = getResources().getDisplayMetrics();

对于“正常”比例因子值,metrics.xdpimetrics.densityDpi具有相同的值。如果不是这种情况,您可以获得“真实”比例因子,即当用户使用以下使用正常比例时使用的比例因子。

if(metrics.xdpi != metrics.densityDpi){
        Log.d(TAG,"Real scale " +  (metrics.xdpi / metrics.densityDpi)*metrics.density);
}

您可以使用所述值将布局中的固定值相乘,以便在不同的屏幕上具有精确的密度。这也意味着布局中的每个值都必须使用px而不是dpsp


虽然这种方法可行,但我强烈建议不要使用它。

首先,因为它是很多工作,并且很难用未来的更新来维护该代码。

其次,Android的这个功能非常方便,如果你的应用程序没有用它编译,它可能会指出你应该更好地构建你的布局。

© www.soinside.com 2019 - 2024. All rights reserved.