Superposición blanca en WebView después de la actualización a AppCompat con Xamarin Forms
En mi aplicación Xamarin Forms
tengo un WebView
utilizado como un formulario al insertar una div con contentEditable
establecido en true. Todo funcionó bien hasta la actualización de estilos AppCompat
.
Ahora, una extraña superposición blanca (cuadrado blanco) aparece cuando el usuario intenta escribir dentro del WebView
, que desaparece cuando se WebView
el teclado. Para encontrar la causa raíz del problema, he creado un proyecto de ejemplo con una sola página que contiene sólo un diseño de pila vertical que contiene otro diseño de pila y la vista web. Lo que he notado es que este problema ocurre si la altura del diseño de la pila interna es suficiente para que la vista web sea cubierta por el teclado cuando aparezca. En este caso, la vista en la Web se mueve hacia arriba y aparece esta extraña superposición. La webview es completamente funcional, y es posible escribir texto, aunque esté oculto por este cuadrado blanco, que desaparece cuando se desactiva el teclado.
- ¿Por qué Xamarin.Forms es tan lento al mostrar algunas etiquetas (especialmente en Android)?
- Cómo obtener / detectar el tamaño de la pantalla en Xamarin.Forms?
- No se pueden establecer propiedades en clases anidadas desde Xaml
- Xamarin.Forms SetHasNavigationBar causas falsas salto en PushAsync
- AlarmManager sólo funciona en un futuro próximo
Este es un ejemplo de una página simple que se puede utilizar para probar el problema. Los botones se han añadido sólo para aumentar y disminuir el tamaño del diseño para mostrar el problema más fácilmente
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; } }
He intentado reproducir este sencillo diseño también con Android nativo, pero parece que no tengo ningún error similar. ¿Es este un error de Xamarin Forms o estoy haciendo algo mal?
- Formularios de Xamarin Android Aplicación no obtener DeviceToken Parse SDK
- Xamarin.Android no pudo implementar los proyectos en el emulador de Visual Studio para Android
- Uso de Google Maps en Xamarin.Forms para Android
- ¿Cómo puedo borrar la pila de navegación?
- ¿Cómo puedo cambiar el color de un elemento seleccionado en un ListView?
- Error de compilación: Error con el proyecto de Android en Xamarin.Forms
- Cómo establecer un atributo de id de android en Xamarin.Forms?
- ¿Cómo mostrar el cuadro de alerta con Xamarin.Forms para su validación?
Al final el problema fue reconocido como un error Xamarin.
- 'Navegación bloqueada' al abrir Intención
- FirebaseRecyclerAdapter y multiplicar tipos de elementos en android