【发布时间】: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