Intereting Posts

Белый наложение в WebView после обновления до AppCompat с помощью форм Xamarin

В моем приложении Xamarin Forms меня есть WebView используется как форма, вставив div с contentEditable установленным в true. Все это отлично работало до обновления стилей AppCompat .

Теперь появляется странная белая надпись (белый квадрат), когда пользователь пытается писать внутри WebView , который исчезает, когда клавиатура отклоняется. Чтобы найти основную причину проблемы, я создал образец проекта только с одной страницей, содержащей только вертикальную структуру стека, содержащую другой макет стека и веб-просмотр. Я заметил, что эта проблема возникает, если высота внутренней компоновки стека достаточно, чтобы веб-просмотр был закрыт клавиатурой, когда она появляется. В этом случае веб-просмотр выдвигается вверх, и появляется этот странный оверлей. Веб-просмотр полностью функциональный, и можно писать текст, даже если он скрыт этим белым квадратом, который исчезает, когда клавиатура отклоняется.

Это пример простой страницы, которая может быть использована для проверки проблемы. Кнопки добавлены только для увеличения и уменьшения размера макета, чтобы легче выявить проблему

 public class MainPage : ContentPage { const string ContentEdit = @"<div contentEditable=""true"" style =""min-height: 200px"">"; const string ContentEditEnd = "</div>"; const string EmptyDocument = @"<body>" + ContentEdit + ContentEditEnd + @"</body>"; WebView webView; public MainPage() { InitializePage(); } void InitializePage() { webView = new WebView() { VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand, }; var button1 = new Button { HorizontalOptions = LayoutOptions.CenterAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand, Text = "-", }; var button2 = new Button { HorizontalOptions = LayoutOptions.CenterAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand, Text = "+", }; var tallLayout = new StackLayout() { Orientation = StackOrientation.Horizontal, HeightRequest = 200, BackgroundColor = Color.Lime, Children = { button1, button2, }, }; button1.Clicked += (sender, e) => tallLayout.HeightRequest = tallLayout.Height - 20; button2.Clicked += (sender, e) => tallLayout.HeightRequest = tallLayout.Height + 20; var layout = new StackLayout { Orientation = StackOrientation.Vertical, VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand, Children = { tallLayout, webView }, }; Content = layout; } protected override void OnAppearing() { InitializeEmptyContent(); } public void InitializeEmptyContent() { var htmlSource = new HtmlWebViewSource(); htmlSource.Html = EmptyDocument; webView.Source = htmlSource; } } 

Я попытался воспроизвести этот простой макет, просто используя собственный Android, но, похоже, у меня нет подобной ошибки. Является ли это ошибкой Xamarin Forms или я делаю что-то неправильно?

В итоге проблема была признана ошибкой Xamarin.