diff --git a/BookAStar/BookAStar.Droid/MarkdownViewRenderer.cs b/BookAStar/BookAStar.Droid/MarkdownViewRenderer.cs index b315bade..dd71776d 100644 --- a/BookAStar/BookAStar.Droid/MarkdownViewRenderer.cs +++ b/BookAStar/BookAStar.Droid/MarkdownViewRenderer.cs @@ -5,6 +5,7 @@ using Xamarin.Forms.Platform.Android; using BookAStar.Droid; using System; using Java.Interop; +using System.ComponentModel; [assembly: Xamarin.Forms.ExportRenderer(typeof(MarkdownView), typeof(MarkdownViewRenderer))] namespace BookAStar.Droid @@ -30,6 +31,7 @@ namespace BookAStar.Droid } } } + public class MarkdownViewRenderer : ViewRenderer { private WebView editorView; @@ -50,20 +52,7 @@ namespace BookAStar.Droid base.OnElementChanged(e); if (Control == null) { - editorView = new WebView(Context); - editorView.Settings.BuiltInZoomControls = true; - editorView.Settings.JavaScriptEnabled = true; - editorView.Settings.LoadsImagesAutomatically = true; - editorView.Settings.SetAppCacheEnabled(true); - editorView.Settings.AllowContentAccess = true; - editorView.Settings.AllowFileAccess = true; - editorView.Settings.AllowFileAccessFromFileURLs = true; - editorView.Settings.AllowUniversalAccessFromFileURLs = true; - editorView.Settings.BlockNetworkImage = false; - editorView.Settings.BlockNetworkLoads = false; - editorView.Settings.DomStorageEnabled = true; - // editorView.SetMinimumHeight(300); - SetNativeControl(editorView); + SetNativeControl(CreateNativeControl()); } if (e.OldElement != null) { @@ -80,7 +69,6 @@ namespace BookAStar.Droid InjectJS(JavaScriptFunction); } } - void InjectJS(string script) { @@ -90,5 +78,33 @@ namespace BookAStar.Droid } } + private WebView CreateNativeControl() + { + editorView = new WebView(Context); + editorView.Settings.BuiltInZoomControls = true; + editorView.Settings.JavaScriptEnabled = true; + editorView.Settings.LoadsImagesAutomatically = true; + editorView.Settings.SetAppCacheEnabled(true); + editorView.Settings.AllowContentAccess = true; + editorView.Settings.AllowFileAccess = true; + editorView.Settings.AllowFileAccessFromFileURLs = true; + editorView.Settings.AllowUniversalAccessFromFileURLs = true; + editorView.Settings.BlockNetworkImage = false; + editorView.Settings.BlockNetworkLoads = false; + editorView.Settings.DomStorageEnabled = true; + // editorView.SetMinimumHeight(300); + return editorView; + } + + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == "Markdown") + { + SetMDEditorText(((MarkdownView)Element).Markdown); + } + base.OnElementPropertyChanged(sender, e); + } + + } } \ No newline at end of file