我的Android应用程序有一些复杂的文本,里面嵌入了超链接。我处理这个问题的最简单方法是使用嵌入式WebView并检测超链接点击以执行自定义命令。我试图用MvvmCross方式做到这一点。是否有可用于WebView.SetBackgroundColor或WebView.LoadData的绑定?一旦我在里面获得自定义html并且用户点击了超链接,我就使用了WebView.SetWebViewClient来安装我自己的客户端,它可以检测超链接点击并执行自定义操作。有什么方法可以将所有这些转化为适当的MvxCommand用法吗?
答案 0 :(得分:1)
是否有可用于WebView.SetBackgroundColor
的绑定
对于View颜色绑定,请参阅示例:https://github.com/slodge/MvvmCross-Tutorials/tree/master/ValueConversion
或WebView.LoadData?
请参阅Dynamic Binding UIWebView in MVVMCross
我使用WebView.SetWebViewClient安装自己的客户端,可以检测超链接点击并执行自定义操作。有什么方法可以将所有这些转化为适当的MvxCommand用法吗?
我不清楚你的问题是什么。也许先尝试编写一些代码,然后再找回一些示例代码来解决问题 - 例如,回过头来讨论一个特定的ViewModel
,以便其他人可以尝试在代码级别而不是更一般的级别回答。或许也可以尝试一次提出一个问题并提出更深入的详细信息 - 如何提问可以帮助您获得更好的结果 - 请参阅https://stackoverflow.com/questions/how-to-ask
答案 1 :(得分:0)
我通过继承和添加了Command属性来创建自定义WebView。然后我添加了一个自定义WebViewClient来检测某些URL并调用绑定的相应命令。这是实现这个目标的好方法吗?
public class AboutWebView : WebView
{
public IMvxCommand AboutCommand { get; set; }
public IMvxCommand LicenseCommand { get; set; }
public IMvxCommand PrivacyCommand { get; set; }
public AboutWebView (Context ctx,IAttributeSet aset) : base(ctx,aset)
{
SetWebViewClient (new AboutWebViewClient(this));
}
private class AboutWebViewClient : WebViewClient
{
private AboutWebView _parent = null;
public AboutWebViewClient(AboutWebView parent)
{
_parent = parent;
}
public override bool ShouldOverrideUrlLoading (WebView view, string url)
{
if (url.StartsWith ("about://"))
_parent.AboutCommand.Execute ();
else if (url.Equals (App.LICENSE_URL))
_parent.LicenseCommand.Execute ();
else
_parent.PrivacyCommand.Execute ();
return(true);
}
}
}