xamarin - 为什么 AbsoluteLayout.LayoutBounds 在 Xamarin 中工作不正确?
问题描述
我不明白为什么屏幕结束前有这么多空间(附照片,平台 - Android)。看起来 AbsoluteLayout 并没有填充屏幕的所有空间,但事实并非如此。“白色”按钮之间的空间也在哪里(一个按钮应该占据屏幕的 20%;首先从屏幕左边缘的 4% 后开始,第二 - 在 28% 之后:28% - 4% -20% = 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="PokerCalculator.OutsCalculator"
BackgroundColor="#131313">
<AbsoluteLayout BackgroundColor="HotPink">
<Label Text="Number of outs:"
FontSize="Medium"
AbsoluteLayout.LayoutBounds="0.04,0,0.3,0.18"
AbsoluteLayout.LayoutFlags="SizeProportional, PositionProportional"
BackgroundColor="Aqua"/>
<Label x:Name="lblOutNumber"
Text="15"
AbsoluteLayout.LayoutBounds="0.35,0,0.18,0.18"
AbsoluteLayout.LayoutFlags="SizeProportional, PositionProportional"
BackgroundColor="Azure"/>
<Button x:Name="btnBack"
Text="BACK"
Clicked="btnBack_Clicked"
AbsoluteLayout.LayoutBounds="0.7,0,0.28,0.18"
AbsoluteLayout.LayoutFlags="SizeProportional, PositionProportional"
BackgroundColor="Fuchsia"/>
<Button BackgroundColor="White"
AbsoluteLayout.LayoutBounds="0.04,0.2,0.20,0.28"
AbsoluteLayout.LayoutFlags="All"/>
<Button BackgroundColor="White"
AbsoluteLayout.LayoutBounds="0.28,0.2,0.20,0.28"
AbsoluteLayout.LayoutFlags="All"/>
<Button BackgroundColor="White"
AbsoluteLayout.LayoutBounds="0.52,0.2,0.20,0.28"
AbsoluteLayout.LayoutFlags="All"/>
<Button BackgroundColor="White"
AbsoluteLayout.LayoutBounds="0.76,0.2,0.20,0.28"
AbsoluteLayout.LayoutFlags="All"/>
</AbsoluteLayout>
</ContentPage>
解决方案
正如这里论坛所讨论的
绝对布局比例不能按您的预期工作/计算。你的意图可以通过使用来实现relativelayout
。
假设您设置 X = 0.5 和 Width = 0.5。
根据您的意图,您可能期望元素的 X 从中心开始并填充 absolutelayout 边界的右后半部分?不。
答案是该元素将是布局边界的 50% 宽度并位于中心。使X位置例如(0.5 * absolutelayoutWidth) - (0.5 * elementWidth)
(我猜公式是这样的?)
我建议使用relativelayout
推荐阅读
- javascript - 无法增加或减少我的数量值 React JS
- javascript - 这里 Map API Uncaught (in promise): TypeError: Cannot read property 'immediateRedraw' of null
- java - Selenium:在 Chrome 浏览器的移动视图和桌面视图之间切换
- javascript - 用 JavaScript 表示表格矩阵数据
- javascript - 使用 JS/Jquery 在所有图像上添加显式宽度和高度
- sql - 查找两个日期之间缺失的日期范围
- sql - 在 postgresql 中创建视图
- python - 我怎样才能改善这段代码的运行时间?
- kde - 从 VNC 查看器连接到 KDE 桌面
- c++ - 使用来自另一个标头的类的标头中的 C++ 语法错误