2016-11-24 17 views
0

xamarinフォームを使用してC#でクロスプラットフォームアプリケーションを開発しています。私はクロスプラットフォームのPCLプロジェクトを作成しました。私はそれにハイブリッドWebビューを実装しました。私はそれに自分のHTMLコンテンツをロードしようとしているので。私はハイブリッドwebviewのナビゲートしたイベントをキャプチャする方法を知りたいだけです。私はXamarinとネイティブモバイル開発には非常に新しいものです。ハイブリッドWebViewナビゲートとナビゲートイベントXamarinフォーム

すべてのプラットフォームのAndroid、iOS、UWP、WinPhoneのハイブリッドWebビューでOnNavigatingイベントとOnNavigatedイベントを取得したいと考えています。

MainPage.xamlを

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:local="clr-namespace:Demo;assembly=Demo" 
      x:Class="Demo.MainPage" 
      Title="Dashboard"> 
    <ContentPage.Content> 
    <local:HybridWebView x:Name="hybridWebView" Uri="local.html" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" /> 
    </ContentPage.Content> 
</ContentPage> 

MainPage.xaml.csアンドロイド

[assembly: ExportRenderer(typeof(HybridWebView), typeof(HybridWebViewRenderer))] 
namespace FISE.Droid 
{ 
    public class HybridWebViewRenderer : ViewRenderer<HybridWebView, Android.Webkit.WebView> 
    { 
     const string JavaScriptFunction = "function invokeCSharpAction(data){jsBridge.invokeAction(data);}"; 

     protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e) 
     { 
      base.OnElementChanged(e); 
      Android.Webkit.WebView.SetWebContentsDebuggingEnabled(true); 

      if (Control == null) 
      { 
       var webView = new Android.Webkit.WebView(Forms.Context); 
       webView.Settings.JavaScriptEnabled = true; 
       webView.Settings.DomStorageEnabled = true; 
       Android.Webkit.WebView.SetWebContentsDebuggingEnabled(true); 
       webView.SetWebChromeClient(new WebChromeClient()); 
       webView.SetWebViewClient(new WebViewClient()); 
       SetNativeControl(webView); 
      } 
      if (e.OldElement != null) 
      { 
       Control.RemoveJavascriptInterface("jsBridge"); 
       var hybridWebView = e.OldElement as HybridWebView; 
       hybridWebView.Cleanup(); 
      } 
      if (e.NewElement != null) 
      { 
       Control.AddJavascriptInterface(new JSBridge(this), "jsBridge"); 
       Control.LoadUrl(string.Format("file:///android_asset/Content/{0}", Element.Uri)); 
       InjectJS(JavaScriptFunction); 
      } 
     } 

     void InjectJS(string script) 
     { 
      if (Control != null) 
      { 
       Control.LoadUrl(string.Format("javascript: {0}", script)); 
      } 
     } 

    } 
} 

そして、私はハイブリッドWebViewの内部の私のHTMLページをデバッグすることができませんため

public UserDashboard() 
     { 
      InitializeComponent(); 
     } 

HybridwebViewRendered.cs 。どうしたらいいですか? ハイブリッドwebviewの高さが100%に設定されていません。ウェブビュー内のhtmlページは高さ:100%プロパティを無視しています。ハイブリッドwebviewの高さを画面サイズに合わせて設定するにはどうすればよいですか?

答えて

0

は、私はあなたが余裕をもって100%の画面サイズに到達することを好む任意のレイアウトoをstackLayoutを使用する必要があると思う、パディングとSpacionは - 私は申し訳ありませんが、私はあなたができると思う

<ContentPage.Content> 
    <StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Margin="0" Padding="0" Spacing="0"> 
     <local:HybridWebView x:Name="hybridWebView" Uri="local.html" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" /> 
    </StackLayout> 
</ContentPage.Content> 

0に設定しましたデバッグHTMLは、理由は、そのHTMLは、プログラミング言語ではなく、C#のようにデバッグすることができます。 HTMLのデバッグを行う機能は何ですか?

0

はわからないあなたはまだ助けを必要とするが、ここでの回答の一部です:あなたがお使いのPCまたは上のエミュレータを実行し、ADBは、その後、実際のデバイスへのUSB接続を接続Chromeを実行するAndroidのため

に「デバッグXamarinのWebView」そして、ここでの指示に従ってください:IOS 11+のために

https://developers.google.com/web/tools/chrome-devtools/remote-debugging/

を、あなたは、最新のSafariのMacビット(Safariの技術プレビュー)を取得する必要があると私はここでその設定にはいくつかの手がかりがあると思う: http://asciiwwdc.com/2016/sessions/420

関連する問題