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の高さを画面サイズに合わせて設定するにはどうすればよいですか?