WebView无法在Xamarin.Forms中的Application启动时呈现

时间:2016-05-15 18:54:52

标签: xamarin xamarin.forms

当我在xamarin中创建WebView时,在启动应用程序时它是不可见的。它在视图重新调整时可见。 我该如何解决上述问题。

以下是我正在使用的示例代码

 var browser = new WebView();
 var htmlSource = new HtmlWebViewSource ();

public SamplePage()
{
    InitializeComponent();
    StackLayout stackLayout = new StackLayout
    {
        VerticalOptions = LayoutOptions.FillAndExpand,
        Children = 
        {
           sometextbox,
           browser 
        }
    }
}

//Code within some button's event
htmlSource.Html = @"<html><body>
        <h1>Xamarin.Forms</h1>
        <p>Welcome to WebView.</p>
        </body></html>";
    browser.Source = htmlSource;

2 个答案:

答案 0 :(得分:2)

似乎FillAndExpand应该在webview上,而不是在StackLayout上

答案 1 :(得分:1)

问题在于WebView不知道它需要多大,所以它可能存在,但没有大小。我所做的是在Width中分配HeightSizeChanged,如下所示:

public SamplePage()
{
    InitializeComponent();
    StackLayout stackLayout = new StackLayout
    {
        VerticalOptions = LayoutOptions.FillAndExpand,
        Children = 
        {
           sometextbox,
           browser 
        }
    }

    SizeChanged += (sender, args) => {
        browser.WidthRequest = Width;
        browser.HeightRequest = Height * 0.75;
    }
}

如果浏览器仍未显示,请保留SizeChanged()代码,因为它会在轮换时更新WebView,但也会将相同的代码添加到OnAppearing()

protected override void OnAppearing() {
    base.OnAppearing();

    browser.WidthRequest  = Width;
    browser.HeightRequest = Height * 0.75;
}

如果您需要在点击按钮时执行此操作,或者您甚至可以保留上述代码,只需更改WebView.IsVisible