【发布时间】:2017-08-11 17:15:42
【问题描述】:
我有这段代码,目前是 和 的组合
我想改用相对布局,但还没有看到太多这样的例子。将不胜感激有关如何实现这一点的任何建议。
关于 XAML 的一些要点。
- emptyGrid 或 phraseGrid 出现在屏幕上
- buttonGrid 或 tapGrid 出现在屏幕上
- 按钮的垂直中心和点击标签应该在同一位置。这样当按钮未显示时,点击标签会出现在与按钮相同的垂直按钮上。
- 框架出现在标签页内
我意识到这不仅仅是一个简单的问题,但我相信其他人会对此感兴趣。由于答案可能非常复杂,因此我将在几天内为此开放 250 点赏金。
<Grid x:Name="emptyGrid" Grid.Row="1" Grid.Column="0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<StackLayout Padding="10,0,10,0" HorizontalOptions="Center" VerticalOptions="Center">
<Label x:Name="emptyLabel" FontSize="18" XAlign="Center" TextColor="Gray" />
</StackLayout>
<Button x:Name="resetButton" Text="Reset points?" TextColor="White" FontAttributes="Bold" FontSize="20" HeightRequest="60" BackgroundColor="#E19A3F" HorizontalOptions="FillAndExpand" VerticalOptions="StartAndExpand">
<Button.FontSize>
<OnPlatform x:TypeArguments="x:Double" iOS="25" Android="20" />
</Button.FontSize>
</Button>
</Grid>
<Grid x:Name="phraseGrid" Padding="20, 20, 20, 20" BackgroundColor="Transparent" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition Height="6*" />
<RowDefinition Height="6*" />
<RowDefinition Height="80*" />
<RowDefinition Height="13*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid x:Name="prGrid" Grid.Row="0" Grid.Column="0"
Padding="5,0,0,0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
BackgroundColor>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25*" />
<ColumnDefinition Width="25*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
<Label x:Name="msg1" Style="{StaticResource smallLabel}" Text="msg1" Grid.Row="0" Grid.Column="0" />
<Label x:Name="msg2" Style="{StaticResource smallLabel}" Text="msg2" Grid.Row="0" Grid.Column="1" />
<Label x:Name="msg3" Style="{StaticResource smallLabel}" Text="msg3" Grid.Row="0" Grid.Column="2" />
</Grid>
<Grid x:Name="siGrid" Grid.Row="1" Grid.Column="0"
Padding="5,0,0,0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25*" />
<ColumnDefinition Width="25*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
<Label x:Name="faveLabel" Style="{StaticResource smallLabel}" FontFamily="FontAwesome" Grid.Row="0" Grid.Column="0" />
<Label x:Name="wordTypeLabel" Style="{StaticResource smallLeftLabel}" Grid.Row="0" Grid.Column="1" />
</Grid>
<Grid x:Name="wordGrid" Grid.Row="2" Grid.Column="0"
HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition Height="45*" />
<RowDefinition Height="55*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid Grid.Row="0" Grid.Column="0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Label x:Name="textLabel" FontSize="45" XAlign="Center" VerticalOptions="Center" LineBreakMode="WordWrap" />
</Grid>
<Grid x:Name="detailGrid" Grid.Row="1" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Padding="10,0,10,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label x:Name="detail1" Grid.Row="0" Style="{StaticResource bigLabel}" />
<Label x:Name="detail2" Grid.Row="1" Style="{StaticResource bigLabel}" />
<Label x:Name="detail3" Grid.Row="2" Style="{StaticResource bigLabel}" />
</Grid>
</Grid>
<Grid x:Name="buttonGrid" Grid.Row="3" Grid.Column="0"
HorizontalOptions="FillAndExpand" VerticalOptions="Center" Padding="20, 0">
<Button x:Name="aButton" Style="{StaticResource pointButton}" Grid.Column="0" Text="0">
</Button>
<Button x:Name="bButton" Style="{StaticResource pointButton}" Grid.Column="1" Text="1">
</Button>
<Button x:Name="cButton" Style="{StaticResource pointButton}" Grid.Column="2" Text="2">
</Button>
<Button x:Name="dButton" Style="{StaticResource pointButton}" Grid.Column="3" Text="5">
</Button>
</Grid>
<Grid x:Name="tapGrid" Grid.Row="3" Grid.Column="0" HorizontalOptions="FillAndExpand" VerticalOptions="Center">
<Label x:Name="tapScreenLabel" Style="{StaticResource smallLabel}" />
</Grid>
</Grid>
</StackLayout>
【问题讨论】:
-
不要使用相对布局,因为 Jason Smith 建议使用绝对布局,它有更好的性能。
-
你有什么链接可以解释更多。我不确定性能是否会成为问题,因为它只是一个没有太大变化的简单页面应用程序。想向您了解更多。我想要相对的原因是因为我希望布局随着屏幕尺寸的变化而变化。谢谢
-
我正要给你亚当的 J wolf 博客布局食谱,但他似乎不再有博客(出于某种原因)。关于相对布局与绝对布局,您可以对两种布局做同样的事情,即使性能不是问题,您也应该检查一下,这里有一些有用的链接:kimsereyblog.blogspot.mx/2016/09/…developer.xamarin.com/guides/xamarin-forms/user-interface/…youtube.com/watch?v=NDOOr29pCng跨度>
-
你能添加一个UI的屏幕截图
标签: xamarin xamarin.forms