gpt4 book ai didi

android - AbsoluteLayout 不填满屏幕

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:26 25 4
gpt4 key购买 nike

我在 Android 6.0 Marshmellow 上的 Xamarin Forms 中遇到绝对布局问题

当设置 View 以填充整个屏幕时,屏幕底部会留下 1px 的间隙。

奇怪的是,如果您将屏幕旋转到横向,它就不会发生。或者在 4.4

xaml:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XamarinTest.Page1">
<AbsoluteLayout BackgroundColor="White">
<BoxView BackgroundColor="Red" AbsoluteLayout.LayoutBounds="0,0,1,1" AbsoluteLayout.LayoutFlags="All">

</BoxView>
</AbsoluteLayout>
</ContentPage>

屏幕截图:(这些来自 vs 模拟器,但我在设备上也有相同的行为,例如 samsung galaxy 6)

1px white line on 6.0.0 (you are gona have to zoom)

在这个例子中,我使用了一个 boxview fillign 屏幕,但它的任何类型的位置都与屏幕底部对齐。

我正在寻找的是某种变通方法或自定义渲染器,它将确保在 1,1 处绘制或拉伸(stretch)屏幕的整个高度的项目放置或拉伸(stretch)到屏幕底部

最佳答案

这是 Xamarin.Forms 2.1.0 中的一个已确认错误:https://bugzilla.xamarin.com/show_bug.cgi?id=40092 .

您可以尝试通过覆盖 LayoutChildren 并将一个高度像素发送到基本实现来修复它。

public class MyAbsoluteLayout : AbsoluteLayout
{
protected override void LayoutChildren(double x, double y, double width, double height)
{
base.LayoutChildren(x, y, width, height+1);
}
}

然后在您的 XAML 中使用它

<local:MyAbsoluteLayout BackgroundColor="White">
<BoxView BackgroundColor="Red" AbsoluteLayout.LayoutBounds="0,0,1,1" AbsoluteLayout.LayoutFlags="All">

</BoxView>
</local:MyAbsoluteLayout>

如果这没有帮助,您可以尝试重新实现 LayoutChildren 函数并像这样操作结果

public class MyAbsoluteLayout : AbsoluteLayout
{
private readonly MethodInfo _computeLayout;

public MyAbsoluteLayout()
{
_computeLayout = typeof(AbsoluteLayout).GetTypeInfo().GetDeclaredMethod("ComputeLayoutForRegion");
}

protected override void LayoutChildren(double x, double y, double width, double height)
{
foreach (View logicalChild in Children)
{
Size region = new Size(width, height);
Rectangle layoutForRegion = (Rectangle)_computeLayout.Invoke(null, new object[] { logicalChild, region });
layoutForRegion.X += x;
layoutForRegion.Y += y + 1;
Rectangle bounds = layoutForRegion;
logicalChild.Layout(bounds);
}
}
}

关于android - AbsoluteLayout 不填满屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36692647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com