fixes heiht request from MD

main
Paul Schneider 9 years ago
parent 208b6df1aa
commit 45d7dc72d3
3 changed files with 20 additions and 10 deletions

@ -17,7 +17,7 @@ using System.Linq;
using System.Text; using System.Text;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorTemplatePreprocessor", "4.2.0.680")] [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorTemplatePreprocessor", "4.2.0.703")]
public partial class MarkdownEditor : MarkdownEditorBase public partial class MarkdownEditor : MarkdownEditorBase
{ {
@ -143,6 +143,10 @@ WriteLiteral(@">
invokeCSharpAction(getMD()); invokeCSharpAction(getMD());
} }
}); });
$(document).ready(function () {
// TODO implement a dedicated injection
invokeCSharpAction(getMD());
});
</script> </script>
</body> </body>

@ -63,6 +63,10 @@
invokeCSharpAction(getMD()); invokeCSharpAction(getMD());
} }
}); });
$(document).ready(function () {
// TODO implement a dedicated injection
invokeCSharpAction(getMD());
});
</script> </script>
</body> </body>

@ -11,11 +11,11 @@ using Android.Views;
[assembly: Xamarin.Forms.ExportRenderer(typeof(MarkdownView), typeof(MarkdownViewRenderer))] [assembly: Xamarin.Forms.ExportRenderer(typeof(MarkdownView), typeof(MarkdownViewRenderer))]
namespace BookAStar.Droid namespace BookAStar.Droid
{ {
public class JSBridge : Java.Lang.Object public class JsBridgeMarkdown : Java.Lang.Object
{ {
readonly WeakReference<MarkdownViewRenderer> hybridWebViewRenderer; readonly WeakReference<MarkdownViewRenderer> hybridWebViewRenderer;
public JSBridge(MarkdownViewRenderer hybridRenderer) public JsBridgeMarkdown(MarkdownViewRenderer hybridRenderer)
{ {
hybridWebViewRenderer = new WeakReference<MarkdownViewRenderer>(hybridRenderer); hybridWebViewRenderer = new WeakReference<MarkdownViewRenderer>(hybridRenderer);
} }
@ -29,7 +29,7 @@ namespace BookAStar.Droid
if (hybridWebViewRenderer != null && hybridWebViewRenderer.TryGetTarget(out hybridRenderer)) if (hybridWebViewRenderer != null && hybridWebViewRenderer.TryGetTarget(out hybridRenderer))
{ {
hybridRenderer.Element.Markdown = data; hybridRenderer.Element.Markdown = data;
MarkdownViewRenderer.OnPageFinished(hybridRenderer.Element, MarkdownViewRenderer.ProperOnPageFinished(hybridRenderer.Element,
hybridRenderer.EditorView); hybridRenderer.EditorView);
} }
} }
@ -51,16 +51,18 @@ namespace BookAStar.Droid
return editorView; return editorView;
} }
} }
/// <summary>
public static async void OnPageFinished(MarkdownView xview, WebView view) /// To be called once document finished loading
/// </summary>
/// <param name="xview"></param>
/// <param name="view"></param>
public static async void AdjustHeightRequest(MarkdownView xview, WebView view)
{ {
int i = 10;
while (view.ContentHeight == 0 && i-- > 0) // wait here till content is rendered
await System.Threading.Tasks.Task.Delay(100);
xview.BatchBegin(); xview.BatchBegin();
xview.HeightRequest = view.ContentHeight; xview.HeightRequest = view.ContentHeight;
xview.BatchCommit(); xview.BatchCommit();
} }
private void SetMDEditorText(string text) private void SetMDEditorText(string text)
{ {
editorTemplate.Model = (text == null) ? null : markdown.Transform(text); editorTemplate.Model = (text == null) ? null : markdown.Transform(text);
@ -87,7 +89,7 @@ namespace BookAStar.Droid
var viewclient = new MarkdownWebViewClient( var viewclient = new MarkdownWebViewClient(
md => { e.NewElement.Markdown = md; }); md => { e.NewElement.Markdown = md; });
EditorView.SetWebViewClient(viewclient); EditorView.SetWebViewClient(viewclient);
Control.AddJavascriptInterface(new JSBridge(this), "jsBridge"); Control.AddJavascriptInterface(new JsBridgeMarkdown(this), "jsBridge");
SetMDEditorText(e.NewElement.Markdown); SetMDEditorText(e.NewElement.Markdown);
InjectJS(JavaScriptFunction); InjectJS(JavaScriptFunction);
} }

Loading…