我将Titanium应用程序(适用于ios和Android)移动到Windows Phone 8.1。我是Windows应用程序的新手。
我想在不同的屏幕上创建一个具有相同外观的应用程序,我的意思是在更大的屏幕显示元素更大但保持应用程序的方面。我想我需要定义边距和宽度以及高度来在页面中放置元素。
我尝试在MainPage.xaml中放入一些基本元素,看看会发生什么。这是我的代码:
<Grid>
<Image Source="Assets/ppal/fondoCompleto.png"
Margin="-25, 0, -25, 0"></Image>
<Image Source="Assets/ppal/settings.png"
Margin="10,10,365,612"></Image>
<TextBlock Text="aaa" FontFamily="Arial"
TextAlignment="Center"
Margin="0, 200, 0, 0"
FontSize="22"/>
<Rectangle
Fill="#0098bc"
Margin="30, 50, 30, 450"
RadiusX="5"
RadiusY="5"/>
</Grid>
我已经在不同英寸的不同Windows手机模拟器中尝试过,结果非常糟糕。它在4英寸上显示确定,但在6英寸上非常糟糕。
你知道我怎么做吗?
有没有办法使用像dip这样的单位而不是像素?
或者是否存在转换宽度,高度,边距并根据屏幕尺寸返回值的公式? (这是我在Titanium app中使用的:Titanium conversion pixels to dp)
非常感谢!
答案 0 :(得分:1)
&#34;我想我需要定义边距和宽度以及高度以在页面中放置元素&#34;
不一定。如果您需要重叠或通过动画移动元素,您可能需要,但如果您只是布置一些表单元素,则应使用网格(或多个网格)来排列它们。我不会尝试从上面看出你的布局(无论如何看起来像是随机测试),但它看起来像这样:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100" />
<RowDefinition Height="*" />
<RowDefinition Height="2*" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<Image Source="Assets/ppal/fondoCompleto.png" Grid.Row="0"></Image>
<Image Source="Assets/ppal/settings.png" Grid.Row="1"></Image>
<Rectangle Grid.Row="2" Fill="#0098bc" RadiusX="5" RadiusY="5" />
<TextBlock Grid.Row="3" Text="aaa" FontFamily="Arial" TextAlignment="Center" FontSize="22"/>
</Grid>
这将排列四行;顶部是100px高,底部是50px高,两个中间行将填满屏幕空间(*)
的其余部分,第二个是第一个(2*)
的两倍。您可以使用ColumnDefinitions
执行相同的操作。图像应缩放以适合包含的网格单元格,如果您需要缩放其他元素以适应通常情况,则可以使用类似ViewBox
的内容。
您还可以使用网格布局和边距/水平对齐的组合来获得所需的布局。边距将相对于包含的网格单元格。也没有什么能阻止你在一个网格单元格中放置多个元素 - 你可以在两个项目上使用Grid.Row=1
,然后使用边距等将它们按照你想要的方式进行布局。