Порядок элемента изменяется, когда он находится в сетке. - PullRequest
0 голосов
/ 07 января 2020

Я поместил некоторые элементы в сетку без каких-либо определений строк и столбцов.

<Grid>
    <Button x:Name="button" Text="{Binding ButtonText}" CornerRadius="5" />
    <Image HorizontalOptions="Start" VerticalOptions="Center" Source="{Binding IconImageSource}" InputTransparent="True"/>
</Grid>

Здесь изображение является верхним элементом. Когда кнопка нажата, изображение возвращается назад. Почему это происходит и есть ли способ остановить это?

1 Ответ

2 голосов
/ 07 января 2020

Эта причина от Быстрые средства визуализации .

Быстрые средства визуализации доступны для следующих элементов управления в Xamarin.Forms на Android:

  • Кнопка
  • Изображение
  • Метка
  • Рамка

Функционально эти быстрые средства визуализации не отличаются от устаревших средств визуализации. Начиная с Xamarin.Forms 4.0 и далее все приложения, нацеленные на FormsAppCompatActivity, будут использовать эти быстрые средства визуализации по умолчанию.

Быстрые средства визуализации могут быть переопределены следующими способами:

  1. Включение устаревших средств визуализации путем добавления следующей строки кода в класс MainActivity перед вызовом Forms.Init:

    Forms.SetFlags("UseLegacyRenderers");

  2. Использование пользовательские средства визуализации, предназначенные для устаревших средств визуализации. Любые существующие пользовательские средства визуализации будут продолжать работать с устаревшими средствами визуализации.

  3. Указание другого View.Visual, например Material, в котором используются разные средства визуализации. Для получения дополнительной информации о Material Visual см. Xamarin.Forms Material Visual. .

Итак, здесь Solution добавляет следующее к вашей MainActivity. OnCreate перед global::Xamarin.Forms.Forms.Init(this, savedInstanceState) вызовом:

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);

    global::Xamarin.Forms.Forms.SetFlags("UseLegacyRenderers"); //add code here

    global::Xamarin.Forms.Forms.Init (this, bundle);
    LoadApplication (new App ()); // method is new in 1.3
}

Эффект:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...