fixes heiht request from MD

This commit is contained in:
2016-10-12 02:08:16 +02:00
parent 208b6df1aa
commit 45d7dc72d3
3 changed files with 20 additions and 10 deletions

View File

@ -17,7 +17,7 @@ using System.Linq;
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
{
@ -143,6 +143,10 @@ WriteLiteral(@">
invokeCSharpAction(getMD());
}
});
$(document).ready(function () {
// TODO implement a dedicated injection
invokeCSharpAction(getMD());
});
</script>
</body>

View File

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

View File

@ -11,11 +11,11 @@ using Android.Views;
[assembly: Xamarin.Forms.ExportRenderer(typeof(MarkdownView), typeof(MarkdownViewRenderer))]
namespace BookAStar.Droid
{
public class JSBridge : Java.Lang.Object
public class JsBridgeMarkdown : Java.Lang.Object
{
readonly WeakReference<MarkdownViewRenderer> hybridWebViewRenderer;
public JSBridge(MarkdownViewRenderer hybridRenderer)
public JsBridgeMarkdown(MarkdownViewRenderer hybridRenderer)
{
hybridWebViewRenderer = new WeakReference<MarkdownViewRenderer>(hybridRenderer);
}
@ -29,7 +29,7 @@ namespace BookAStar.Droid
if (hybridWebViewRenderer != null && hybridWebViewRenderer.TryGetTarget(out hybridRenderer))
{
hybridRenderer.Element.Markdown = data;
MarkdownViewRenderer.OnPageFinished(hybridRenderer.Element,
MarkdownViewRenderer.ProperOnPageFinished(hybridRenderer.Element,
hybridRenderer.EditorView);
}
}
@ -51,16 +51,18 @@ namespace BookAStar.Droid
return editorView;
}
}
public static async void OnPageFinished(MarkdownView xview, WebView view)
/// <summary>
/// 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.HeightRequest = view.ContentHeight;
xview.BatchCommit();
}
private void SetMDEditorText(string text)
{
editorTemplate.Model = (text == null) ? null : markdown.Transform(text);
@ -87,7 +89,7 @@ namespace BookAStar.Droid
var viewclient = new MarkdownWebViewClient(
md => { e.NewElement.Markdown = md; });
EditorView.SetWebViewClient(viewclient);
Control.AddJavascriptInterface(new JSBridge(this), "jsBridge");
Control.AddJavascriptInterface(new JsBridgeMarkdown(this), "jsBridge");
SetMDEditorText(e.NewElement.Markdown);
InjectJS(JavaScriptFunction);
}