Ошибка события нажатия кнопки Xamarin с эмулятором Android - PullRequest
0 голосов
/ 15 января 2020

У меня проблемы с выполнением нажатий кнопок при использовании форм Xamarin для Android. Мой код - это просто пустой шаблон с добавленным Button и обработчиком Click. Я использую Visual Studio 2019 Enterprise. Проекты iOS и UWP присутствуют, но отключены.

Я обновил все пакеты NuGet и Android SDK и инструменты до последней версии (Xamarin.Forms v4.4.0.991477). Я пробовал Android 9.0 API 28 и 6.0 API 23.

Точка останова, установленная в OnButtonClicked, никогда не срабатывает. MainPage само по себе вроде нормально грузится; Нет явных ошибок или проблем с макетом. Никаких исключений не выдается.

Я попытался загрузить пример проекта с похожим кодом и запустить его без изменений - та же проблема.

Это работает так, как если бы щелчок мыши / касание на эмуляторе игнорировался .

<?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:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             Title="Home"
             x:Class="Sched.MainPage">
    <ContentPage.Content>
        <StackLayout>
            <Button Text="Button" Clicked="OnButtonClicked" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>
using System;
using System.ComponentModel;
using Xamarin.Forms;

namespace Sched
{
    [DesignTimeVisible(false)]
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        async void OnButtonClicked(object sender, EventArgs e)
        {
            var taskPage = new TaskPage();
            await this.Navigation.PushAsync(taskPage);
        }
    }
}
<?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:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             Title="Task"
             x:Class="Sched.TaskPage">
    <ContentPage.Content>
        <StackLayout>
            <Label Text="Welcome to Xamarin.Forms!"
                VerticalOptions="CenterAndExpand" 
                HorizontalOptions="CenterAndExpand" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

1 Ответ

0 голосов
/ 04 февраля 2020

Проблема решена.

Код в порядке. Проблема заключалась в том, что мой основной монитор имеет размер 3840 x 2160 пикселей и обычно настроен на масштабирование 150% с использованием Windows Параметры отображения. Если я установлю 100% масштабирование, проблема исчезнет. Эквивалентно, если я перетаскиваю окно эмулятора Android на свой дополнительный монитор, который имеет 100% масштабирование, это также работает.

Еще один побочный эффект 150% масштабирования заключается в том, что он заставляет эмулятор отображаться как большой solid черный ящик с экраном Android в левом верхнем углу. При 100% масштабировании черный ящик исчезает, оставляя только экран Android.

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