问题描述
我有一张由网格制成的桌子。我是在横向模式下制作的。但我想全屏看。数据总是在变化,所以我总是希望它适合我的屏幕。我怎样才能做到这一点?我尝试使用 grid VerticalOptions
和 HorizontalOptions
FillAndExpand
但没有奏效。我还能做什么?
<Grid x:Name="gr2">
<Grid.RowDeFinitions>
<RowDeFinition Height="1.5"/>
<RowDeFinition Height="1.2*"/>
<RowDeFinition Height="1.5"/>
</Grid.RowDeFinitions>
<Grid.ColumnDeFinitions>
<ColumnDeFinition Width="1.5"/>
<ColumnDeFinition Width="*"/>
<ColumnDeFinition Width="1.5"/>
<ColumnDeFinition Width="0.5*"/>
<ColumnDeFinition Width="1.5"/>
<ColumnDeFinition Width="Auto"/>
<ColumnDeFinition Width="1.5"/>
<ColumnDeFinition Width="Auto"/>
<ColumnDeFinition Width="1.5"/>
</Grid.ColumnDeFinitions>
<Grid x:Name="gr2">
<Grid.RowDeFinitions>
<RowDeFinition Height="1.5"/>
<RowDeFinition Height="1.5*"/>
<RowDeFinition Height="1.5"/>
</Grid.RowDeFinitions>
<Grid.ColumnDeFinitions>
<ColumnDeFinition Width="1.5"/>
<ColumnDeFinition Width="*"/>
<ColumnDeFinition Width="1.5"/>
<ColumnDeFinition Width="0.7*"/>
<ColumnDeFinition Width="1.5"/>
<ColumnDeFinition Width="0.7*"/>
<ColumnDeFinition Width="1.5"/>
</Grid.ColumnDeFinitions>
我的定义必须是这样。 (我为宽度为 1.5 的表格行添加框视图)
解决方法
第一个问题。通过玩网格。您必须知道星号 *
表示屏幕的其余部分。如果您有 4 个星号,则意味着屏幕的其余部分将分成相同大小的 4 个区域(可以是行或列)。
因此从逻辑上讲,它可以通过在 RowDefinition
和 ColumnDefinition
中至少放置一个星号来进行筛选。
为了更好的设计,我建议使用 RowSpan
属性。在某些情况下它会帮助你。仅供参考,网格支持分层系统。所以你可以在其他组件后面有组件。为了实现这一点,您必须使用 RowSpan
以便可以看到分层组件。
请查看此代码 <RowDefinition Height="1.5*"/>
。我不知道你为什么在 1.5
后面加上星号。
对于第二个问题。我通过根据所需的网格行和列分配滚动视图来完成这项工作。 示例
<ScrollView Grid.Row="1" Grid.Column="1" Grid.RowSpan="3" Grid.ColumnSpan="4">
<!-- this area is scrollable -->
</ScrollView>