Xamarin.Формы устанавливают разные определения столбцов для разных платформ (Android, ios)

#xamarin.forms #grid

#xamarin.формы #сетка #xamarin.forms

Вопрос:

У меня есть эта сетка:

         <Grid >
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="1.07*" />
                <ColumnDefinition Width="1.2*" />
                <ColumnDefinition Width="0.05*" />
            </Grid.ColumnDefinitions>
</Grid>
  

Эта сетка является частью titleview в Android и ios. Мне нужно центрировать значок в среднем столбце, но поскольку ios и Android обрабатывают вид заголовка по-разному, значок в середине на ios находится немного левее, в то время как на Android он находится в центре. Мне нужно было бы установить разную ширину столбца для каждой платформы.

Выполнимо ли это?

Спасибо!

Ответ №1:

Вы можете использовать следующий код для достижения различных определений столбца для разных платформ (Android, ios).

     <Grid >
            <Grid.ColumnDefinitions>
                <ColumnDefinition  >
                    <ColumnDefinition.Width>
                        <OnPlatform x:TypeArguments="GridLength">
                            <On Platform="iOS" Value="1.2*"></On>
                            <On Platform="Android" Value="2.07*"></On>
                        </OnPlatform>
                    </ColumnDefinition.Width>
                    
                </ColumnDefinition>
                <ColumnDefinition Width="1.2*" />
                <ColumnDefinition Width="0.05*" />
            </Grid.ColumnDefinitions>

            <Label Grid.Row="0" Grid.Column="0" Text="By default, a Grid contains one row and one column." />
        </Grid>
  

Комментарии:

1. Эпично, это работает КАК ШАРМ <3 (просто обратите внимание, что мой исходный столбец имел ширину 1,07, а не 2,07. (может сбить с толку некоторых, кто пытается абстрагироваться от того, что вы здесь сделали), Возможно, отредактируйте его, чтобы люди знали, что именно произошло. спасибо 🙂