平台上的不同网格尺寸(高度)

时间:2018-11-12 10:25:46

标签: xamarin xamarin.forms xamarin.ios xamarin.android

我有一个网格,其中Android RowDefinition(heigh)t为100,在iO上为120。如何在Xaml中对每个平台标识执行此操作。

 <ContentPage.Resources>
        <ResourceDictionary>
            <OnPlatform x:Key="GridSize"   x:TypeArguments="GridLength"  iOS="120"  Android="100"  />
        </ResourceDictionary>
    </ContentPage.Resources>


    <Grid RowSpacing="0" x:Name="grid" AbsoluteLayout.LayoutFlags="All" 
            <Grid.RowDefinitions>
                <RowDefinition Height="{StaticResource GridSize}" />
            <RowDefinition Height="60" />
                <RowDefinition Height="280" />
            </Grid.RowDefinitions>
       </Grid>

这种方式不起作用。

2 个答案:

答案 0 :(得分:0)

您是否尝试过直接而不是通过资源进行操作?

<Grid RowSpacing="0" x:Name="grid" AbsoluteLayout.LayoutFlags="All" 
        <Grid.RowDefinitions>
            <RowDefinition>
                <RowDefinition.Height>
                    <OnPlatform x:TypeArguments="GridLength">
                       <On Platform="Android">100</On>
                       <On Platform="iOS"120/On>
                    </OnPlatform>
                </RowDefinition.Height>
            </RowDefinition>
            <RowDefinition Height="60" />
            <RowDefinition Height="280" />
        </Grid.RowDefinitions>
   </Grid>

或者,您可以使用较新的markup extension<RowDefinition Height="{OnPlatform 100, iOS=120, Android=100}" />

答案 1 :(得分:0)

不确定这是否归因于Xamarin表单版本不同吗? 我已经通过v 3.1和3.3进行了测试,并在ContentPage之后进行了测试,然后得到了模拟器屏幕...因此看来它应该可以工作。

有关设置的详细信息吗?

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:TestGrid" x:Class="TestGrid.MainPage">
    <ContentPage.Resources>
        <ResourceDictionary>
            <OnPlatform x:Key="GridSize" x:TypeArguments="GridLength" iOS="220" Android="50" />
        </ResourceDictionary>
    </ContentPage.Resources>

        <Grid RowSpacing="0" x:Name="grid">
            <Grid.RowDefinitions>
                <RowDefinition Height="{StaticResource GridSize}" />
            <RowDefinition Height="60" />
                <RowDefinition Height="280" />
            </Grid.RowDefinitions>

        <BoxView Grid.Row="0" BackgroundColor="Lime" Color="Lime" />
        <BoxView Grid.Row="1" BackgroundColor="Yellow" Color="Yellow" />

       </Grid>
</ContentPage>

simulator