【问题标题】:How to scale layout proportionally to screen's physical size?如何根据屏幕的物理尺寸按比例缩放布局?
【发布时间】:2022-01-15 23:24:19
【问题描述】:

需要整个布局宽度与任何设备的屏幕的纵向物理宽度完全一致,这样 DPI、屏幕尺寸、像素纵向宽度或宽高关系都无关紧要.

我现在要做的就是通过将下一个代码添加到 MainActivity.cs 来覆盖用户 Android 配置中的字体大小:

public override Resources Resources
{
    get
    {
        Configuration config = base.Resources.Configuration;
        if (config == null)
        {
            config = new Configuration();
        }
        config.FontScale = 1f;
        return CreateConfigurationContext(config).Resources;
    }
}

这取得了很大的进步,但仍然可以看到不同设备之间的大量差异,这些设备可能具有更长或更短的屏幕、更大或更小的 DPI 以及不同的尺寸。例如来自模拟器的设备 Pixel 2,它具有 1080x1920 分辨率和 420 dpi,布局非常适合(我就是这样做的),但是当我在物理设备 Redmi 9 1080x2340 分辨率和 395 dpi 中尝试时(大约 3 毫米更大的纵向宽度) ,布局变大了,元素放不下。

如何使布局宽度与物理尺寸成比例缩放,以便无论设备如何,它都可以始终适合纵向模式的宽度?

【问题讨论】:

  • 如果您的项目是Xamarin.Android,首先您可以在设计UI之前获取手机的尺寸或为不同尺寸的屏幕创建不同的xml。另外,使用 wrap_content 代替特定的 dp。此外,您还可以使用 ConstraintLayout,它可以使 UI 中的视图根据屏幕宽度的比例显示。如果你的项目是 Xamarin.Forms,你应该先通过 Essential 获取设备的比例,然后设置视图的宽高。
  • 可以尝试使用权重来设置布局的宽高。

标签: android android-layout xamarin xamarin.forms


【解决方案1】:

您可以尝试使用 ConstraintLayout 的百分比或比率维度属性。

约束布局:ConstraintLayout

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多