Xamarin Forms网络视图未显示在设备上

本文关键字:显示 Forms 网络 视图 Xamarin | 更新日期: 2023-09-27 18:27:40

我在Xamarin开发了一个webview应用程序。在过去的几天里,我一直在android和iOS模拟器上测试它,它在模拟器中似乎运行得很好,但当我去尝试在自己的android设备上测试它时,它只是显示了xamarin splashscreen(我目前使用的是试用版),然后转换为空白的白色屏幕,而不是webview。

有人知道它为什么这么做吗?

我将在下面附上我的代码:应用程序

using Xamarin.Forms;
namespace WebViewApp
{
    public class App() : Application
    {
        public App()
        {
            // The root page of your application
            MainPage = new WebPage();
        }
        protected override void OnStart()
        {
            // Handle when your app starts
        }
        protected override void OnSleep()
        {
            // Handle when your app sleeps
        }
        protected override void OnResume()
        {
            // Handle when your app resumes
        }
    }
}

WebPage.cs

using Xamarin.Forms;
namespace WebViewApp
{
    public class WebPage : ContentPage
    {
        private const string URL = "https://www.google.com";
        private const int PADDING_WIDTH = 0;
        private int paddingHeight;
        private WebView webView;
        public WebPage()
        {
            webView = new WebView
            {
                Source = URL,
                VerticalOptions = LayoutOptions.FillAndExpand,
                HorizontalOptions = LayoutOptions.FillAndExpand
            };
            CheckDevice();
            Content = new StackLayout
            {
                Padding = new Thickness(PADDING_WIDTH, GetPaddingHeight()),
                Chrildren = { webView }
            };
        }
        public int GetPaddingHeight()
        {
            return paddingHeight;
        }
        /// <summary>
        /// This will set the padding height for the webview when displayed
        /// <summary>
        /// <param name="pHeight">Set integer value for the padding height.</param>
        public void SetPaddingHeight(int pHeight)
        {
            paddingHeight = pHeight;
        }
        private void CheckDevice()
        {
            if(Device.OS == TargetPlatform.Android)
            {
                SetPaddingHeight(0);
            }
            else if(Device.OS == TargetPlatform.iOS)
            {
                SetPaddingHeight(20);
            }
        }
    }
}

**更新**我使用的是一家公司的网站,但我一直在谷歌、youtube和亚马逊等多个不同的网站上测试这款应用程序。似乎唯一不会在我的设备上显示的网站是我的公司网站(它是一个响应式网站),但其他所有网站都会显示。

Xamarin Forms网络视图未显示在设备上

自版本9以来,iOS将只允许您的应用程序与默认情况下实现最佳实践安全性的服务器通信。必须在Info.plist中设置值,才能启用与不安全服务器的通信。

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads </key>
        <true/>
    </dict>

您必须设置HeightRequest和WidthRequest这两个属性。

WebView要求指定HeightRequest和WidthRequest当包含在StackLayout或RelativeLayout中时。如果你没有指定这些属性,WebView将不会呈现。

来源:https://developer.xamarin.com/guides/xamarin-forms/user-interface/webview/

以下是我在Xamarin.Forms应用程序中显示Web视图的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Xamarin;
using Xamarin.Forms;
namespace mynamespace
{
    public class WebsitePage : ContentPage
    {
        public WebsitePage(string url)
        {
            Label lbl_header = new Label
            {
                Text = "WebView",
                HorizontalOptions = LayoutOptions.Center
            };
            WebView webview = new WebView
            {
                Source = url,
                VerticalOptions = LayoutOptions.FillAndExpand
            };
            this.Content = new StackLayout
            {
                Children = {
                     webview
                }
            };
        }
    }
}