2

Xamarin.Forms アプリで HTML5 localstorage を有効にしたいと考えています。Android デバイスにデプロイすると、ローカル ストレージが有効になっていないため、Web ページでエラーが発生していることがわかります。

ネイティブでは、localstorage は次のように有効にできます。

    webview = (WebView) findViewById(R.id.webview); 
    WebSettings settings = webview.getSettings(); 
    settings.setDomStorageEnabled(true);

Xamarin.Forms WebView (Xamarin.Forms.WebView) にしかアクセスできない場合、Android Web ビュー (Android.WebKit.Webview) のこれらのプラットフォーム固有の設定にどのように/どこからアクセスできますか。

より一般的には、Xamarin.Forms でプラットフォーム固有のコードを作成することはまったく可能ですか?それとも、Xamarin.Forms は最も基本的なアプリケーション以外のすべてに対して制限されすぎていますか?

4

2 に答える 2

5

はい、Xamarin.Forms を使用するときにプラットフォーム固有のコードを記述することは可能です。これは、Paul が言ったように、まさにレンダラーの拡張機能の機能です。

Forms PCL でカスタム WebView を作成する

public class CustomWebView : WebView { }

Android プロジェクトでカスタム WebciewRenderer を作成します

public class CustomWebViewRenderer : global::Xamarin.Forms.Platform.Android.WebViewRenderer
{
    protected override void OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.WebView> e)
    {
        base.OnElementChanged (e);

        if (Control != null) {
            Control.Settings.DomStorageEnabled = true;
        }
    }
}

レンダラーをエクスポートすることを忘れないでください

[assembly: ExportRenderer (typeof (CustomWebView), typeof(CustomWebViewRenderer))]
于 2015-12-03T01:15:57.977 に答える