首页 > 解决方案 > 如何在一个平台上更改布局而不影响另一个平台

问题描述

我在 Android 和 iOS 平台上运行了该程序,您可以检查 iOS 上的组件是否略高于我想在 Android 上居中,即在不影响 Android 的情况下调整它。

我想修改网格值

 <Grid RowSpacing="0">
        <OnPlatform x:TypeArguments="Thickness">
            <On Platform="Android">0,10,0,0</On>
            <On Platform="iOS">0,20,0,0</On>
        </OnPlatform>
        <Grid.RowDefinitions>
            <RowDefinition Height="100" />
            <RowDefinition Height="60" />
            <RowDefinition Height="280" />
        </Grid.RowDefinitions>

        <StackLayout Grid.Row="0" Orientation="Horizontal" Margin="30,0,30,0">
            <local1:Submenu></local1:Submenu>
        </StackLayout>

        <Label  Grid.Row="1" Text="Início" TextColor="White" FontSize="40"  Margin="55,10,0,0"></Label>

        <Grid Grid.Row="2" ColumnSpacing="5" RowSpacing="5" HorizontalOptions="Center"  VerticalOptions="Center" Margin="48,20,48,0" >

            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>


            <!--  button images  -->
            <Image x:Name="CmdCalendario" Grid.Row="0" Grid.Column="0"  Source="calendarioFiscallivre.png" />
            <Image x:Name="CmdContaCorrente" Grid.Row="0" Grid.Column="1"  Source="botaocadastrolivre.png" />
            <Image x:Name="CmdCadastro" Grid.Row="1" Grid.Column="0" Source="botaocadastrolivre.png" />
            <Image x:Name="CmdOutros" Grid.Row="1" Grid.Column="1"  Source="botaocadastrolivre.png"/>
            <!--<Image x:Name="CmdLiquidacao" Grid.Row="1" Grid.Column="0"  Source="botaocadastrolivre.png" />-->

        </Grid>
    </Grid>

我还从后面的代码中测试了它,它不起作用

 switch (Device.RuntimePlatform)
            {
                case Device.iOS:
                    grid.RowDefinitions.Add(new RowDefinition { Height = 130 });
                    grid.RowDefinitions.Add(new RowDefinition { Height = 80 });
                    grid.RowDefinitions.Add(new RowDefinition { Height = 250 });
                    break;

                case Device.Android:
                    grid.RowDefinitions.Add(new RowDefinition { Height = 100 });
                    grid.RowDefinitions.Add(new RowDefinition { Height = 80 });
                    grid.RowDefinitions.Add(new RowDefinition { Height = 280 });
                    break;
            }

标签: c#xamlxamarin.formsxamarin.iosxamarin.android

解决方案


尝试指定ThicknessunderGrid.Padding属性。ThicknessPadding属性的类型。

解决方案:

<Grid.Padding>
      <OnPlatform x:TypeArguments="Thickness">
           <On Platform="Android">0,10,0,0</On>
           <On Platform="iOS">0,20,0,0</On>
      </OnPlatform>
</Grid.Padding>

推荐阅读