Белое наложение в WebView после обновления до AppCompat с Xamarin Forms
В моем 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 или я делаю что-то не так?