Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XamarinWebView通常不显示任何内容 public分部类页面:ContentPage { 公共页(字符串文件名) { 如果。。。 { WebView=新建WebView { 来源=”http://xamarin.com" //来源=”http://www.google.com" /*Source=新的HtmlWebViewSource { Html=@“ 测试代码_C#_Android_Xaml_Xamarin_Webview - Fatal编程技术网

C# XamarinWebView通常不显示任何内容 public分部类页面:ContentPage { 公共页(字符串文件名) { 如果。。。 { WebView=新建WebView { 来源=”http://xamarin.com" //来源=”http://www.google.com" /*Source=新的HtmlWebViewSource { Html=@“ 测试代码

C# XamarinWebView通常不显示任何内容 public分部类页面:ContentPage { 公共页(字符串文件名) { 如果。。。 { WebView=新建WebView { 来源=”http://xamarin.com" //来源=”http://www.google.com" /*Source=新的HtmlWebViewSource { Html=@“ 测试代码,c#,android,xaml,xamarin,webview,C#,Android,Xaml,Xamarin,Webview,代码正在运行 " }*/ }; 内容=新的StackLayout() { 孩子们= { 看法 } }; } 其他的 页面大部分时间都是空白的。在xamarin.com的例子中,经过长时间的延迟后,页面占我运行页面时间的20%左右。google和自定义测试根本不起作用。自定义测试是我希望在某些特定情况下使用的测试,它更容易创建为web代码 在我的其他情况下,我创建和添加的其他视图组件工作得非常好。(按钮、标签等…) 断点并没有给我太多的提示。监视列表毫无用处地无法告诉我任何事情。我可以通过单步执

代码正在运行

" }*/ }; 内容=新的StackLayout() { 孩子们= { 看法 } }; } 其他的 页面大部分时间都是空白的。在xamarin.com的例子中,经过长时间的延迟后,页面占我运行页面时间的20%左右。google和自定义测试根本不起作用。自定义测试是我希望在某些特定情况下使用的测试,它更容易创建为web代码

在我的其他情况下,我创建和添加的其他视图组件工作得非常好。(按钮、标签等…)

断点并没有给我太多的提示。监视列表毫无用处地无法告诉我任何事情。我可以通过单步执行看出,在我的各种测试用例中都找到了正确的代码路径,但仅此而已

测试在我的Android手机上的Xamarin Live Player(Android 6.0-API 23)中完成。代码在Visual Studio 2015中。目标平台为Android和iOS

相应的xaml页面没有太多内容

public partial class Page : ContentPage
{
    public Page(string filename)
    {
        if(...
        {
            WebView view = new WebView
            {
                Source = "http://xamarin.com"
                //Source = "http://www.google.com"
                /*Source = new HtmlWebViewSource
                {
                    Html = @"<html><body>
                            <h1>Test Code</h1>
                            <p>The code is working.</p>
                            </body></html>"
                }*/
            };
            Content = new StackLayout()
            {
                Children =
                {
                    view
                }
            };
        }
        else ...

页面大部分时间都是空白的。在xamarin.com的例子中,经过长时间的延迟后,页面占我运行页面时间的20%左右。google和自定义测试根本不起作用。自定义测试是我希望在某些特定情况下使用的测试,它更容易创建为web代码

我已经对其进行了测试并重现了问题。只有在构造函数中或在出现的
中以编程方式创建webview时才会发生这种情况。我设置了断点,发现webview的高度不会自动展开(始终为0)。我的猜测是,如果您在页面的构造函数中创建webview或在出现时创建
,则webview永远不会根据其web内容进行重新测量

因此,有两种解决办法:

  • 在Xaml中使用webview:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.Company.Project" android:versionCode="1" android:versionName="1.0">
        <uses-sdk android:minSdkVersion="15" />
        <uses-permission android:name="android.permission.INTERNET" />
        <application android:label="Project.Android"></application>
    </manifest>
    
  • 更新:如果您正在使用
    HtmlWebViewSource
    作为Web视图的源代码。
    View\u Navigated
    将不会被触发。因此在这种情况下,您可以设置
    webview.HeightRequest
    在设置
    webview.Source
    后显式执行:

    protected override void OnAppearing()
    {
        base.OnAppearing();
        view = new WebView();
        Content = new StackLayout
        {
            Children = { view }
        };
        view.Navigated += View_Navigated;
        view.Source = "http://xamarin.com";
    
    }
    
    private void View_Navigated(object sender, WebNavigatedEventArgs e)
    {
        (sender as WebView).HeightRequest = Height;
    }
    
    view=newwebview();
    内容=新的堆栈布局
    {
    子项={view}
    };
    view.Navigated+=视图_Navigated;
    //view.Source.BindingContextChanged+=Source\u BindingContextChanged;
    //view.Source.PropertyChanged+=Source\u PropertyChanged;
    HtmlWebViewSource mSource=新的HtmlWebViewSource
    {
    Html=@“
    测试代码
    代码正在运行

    " }; view.Source=mssource; view.HeightRequest=150;
    你在android清单文件中添加了
    互联网
    权限了吗?是的,就在那里。将数据编辑到帖子中。谢谢!这一更改导致外部网站加载很好。(导航完成后,我进行了高度更新。)但是它没有修复HtmlWebViewSource测试…使用HtmlWebViewSource提供我自己的内容是我的最终目标。然后,您需要将
    高度请求设置为某个数字。请检查我的更新。成功了!非常感谢您的帮助!
    
    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         ...>
        <WebView Source="http://xamarin.com"></WebView>
    </ContentPage>
    
    protected override void OnAppearing()
    {
        base.OnAppearing();
        view = new WebView();
        Content = new StackLayout
        {
            Children = { view }
        };
        view.Navigated += View_Navigated;
        view.Source = "http://xamarin.com";
    
    }
    
    private void View_Navigated(object sender, WebNavigatedEventArgs e)
    {
        (sender as WebView).HeightRequest = Height;
    }
    
    view = new WebView();
    Content = new StackLayout
    {
        Children = { view }
    };
    view.Navigated += View_Navigated;
    //view.Source.BindingContextChanged += Source_BindingContextChanged;
    //view.Source.PropertyChanged += Source_PropertyChanged;
    HtmlWebViewSource mSource = new HtmlWebViewSource
    {
        Html = @"<html><body>
               <h1>Test Code</h1>
               <p>The code is working.</p>
               </body></html>"
    };
    view.Source = mSource;
    view.HeightRequest = 150;