webview上的xamarin表单标签(如水印)
webview上的xamarin表单标签(如水印),xamarin,xamarin.forms,Xamarin,Xamarin.forms,如何在xamarin表单中的webview上添加水印(label.text)?是否希望获得如下截图所示的效果 如果是这样,您应该通过自定义渲染器来实现它。当url加载完成后,我们应该添加一个JS来实现水印。我建议您使用addWaterMarker()方法,它不会使webview失去焦点 [assembly: ExportRenderer(typeof(WebView), typeof(MyWebviewRenderer))] namespace WebviewCoverDemo.Droid {
如何在xamarin表单中的webview上添加水印(label.text)?是否希望获得如下截图所示的效果 如果是这样,您应该通过自定义渲染器来实现它。当url加载完成后,我们应该添加一个JS来实现水印。我建议您使用
addWaterMarker()
方法,它不会使webview失去焦点
[assembly: ExportRenderer(typeof(WebView), typeof(MyWebviewRenderer))]
namespace WebviewCoverDemo.Droid
{
public class MyWebviewRenderer: WebViewRenderer
{
Context context;
public MyWebviewRenderer(Context context):base(context)
{
this.context = context;
}
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
Control.Settings.JavaScriptEnabled = true;
Control.SetWebViewClient(new MyWebviewClient());
}
}
internal class MyWebviewClient : Android.Webkit.WebViewClient
{
bool showDiv = false;
public override void OnPageFinished(Android.Webkit.WebView view, string url)
{
base.OnPageFinished(view, url);
view.LoadUrl("javascript:" + (showDiv ? addWaterMarkerDiv("ss")
: addWaterMarker("body background")));
}
string addWaterMarker(string watermark)
{
string js = "var newscript = document.createElement(\"script\");";
js += "var bbTextNode = document.createTextNode(\"";
js += "var can = document.createElement('canvas');";
js +=
"var body = document.body;body.appendChild(can);can.width=400; can.height=400;can.style.display='none';"
+ "var cans = can.getContext('2d');cans.rotate(-20*Math.PI/180);cans.font = '46px Microsoft JhengHei';"
+ "cans.fillStyle = 'rgba(255, 0, 0, 0.50)';cans.textAlign = 'left';"
+ "cans.textBaseline = 'Middle';cans.fillText('watermark',can.width/3,can.height/2);"
+ "body.style.backgroundImage='url('+can.toDataURL('image/png')+')';"
;
js += "\");";
js += "newscript.appendChild(bbTextNode);";
//js += "var t = document.createTextNode(\"alert('action');\");";
//js += "newscript.appendChild(t);";
//js += "newscript.onload=function(){xxx();};"; //xxx()代表js中某方法
js += "document.body.appendChild(newscript);";
return js;
}
string addWaterMarkerDiv(string watermark)
{
string js = "var newscript = document.createElement(\"script\");";
js += "var waterMarkDiv = document.createTextNode(\""
//+"if(document.getElementById('waterMark') != null) return;"
+ "var m = 'waterMark';"
+ "var newMark = document.createElement('div');"
+ "newMark.id = m;"
+ "newMark.style.position = 'absolute';"
+ "newMark.style.zIndex = '9527';"
+ "newMark.style.top = '0px';"
+ "newMark.style.left = '0px';"
+ "newMark.style.width = '800px';"
+ "newMark.style.height = '400px';"
//+ "alert('newmark');"
+ "\");"
;
js += "newscript.appendChild(waterMarkDiv);";
js += "var bbTextNode = document.createTextNode(\"";
js += "var can = document.createElement('canvas');";
js +=
"var body = document.body;body.appendChild(can);can.width=400; can.height=400;can.style.display='none';"
+ "var cans = can.getContext('2d');cans.rotate(-20*Math.PI/180);cans.font = '46px Microsoft JhengHei';"
+ "cans.fillStyle = 'rgba(17, 17, 17, 0.50)';cans.textAlign = 'left';"
+ "cans.textBaseline = 'Middle';cans.fillText('watermark',can.width/3,can.height/2);"
+ "newMark.style.backgroundImage='url('+can.toDataURL('image/png')+')';"
+ "newMark.style.filter = 'alpha(opacity=50)';"
+ "document.body.appendChild(newMark);"
;
js += "\");";
js += "newscript.appendChild(bbTextNode);";
js += "document.body.appendChild(newscript);";
return js;
}
}
}
[程序集:ExportRenderer(typeof(WebView)、typeof(MyWebviewRenderer))]
命名空间WebviewCoverDemo.Droid
{
公共类MyWebviewRenderer:WebViewRenderer
{
语境;
公共MyWebviewRenderer(上下文):基础(上下文)
{
this.context=上下文;
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
Control.Settings.JavaScriptEnabled=true;
Control.SetWebViewClient(新的MyWebviewClient());
}
}
内部类MyWebviewClient:Android.Webkit.WebViewClient
{
bool showDiv=false;
public override void OnPageFinished(Android.Webkit.WebView视图,字符串url)
{
base.OnPageFinished(视图、url);
view.LoadUrl(“javascript:”+(showDiv?addWaterMarkerDiv(“ss”)
:addWaterMarker(“身体背景”);
}
字符串添加水印(字符串水印)
{
string js=“var newscript=document.createElement(\“script\”);”;
js+=“var bbTextNode=document.createTextNode(\”;
js+=“var can=document.createElement('canvas');”;
js+=
“var body=document.body;body.appendChild(can);can.width=400;can.height=400;can.style.display='none';”
+“var cans=can.getContext('2d');cans.rotate(-20*Math.PI/180);cans.font='46px Microsoft JhengHei';”
+“cans.fillStyle='rgba(255,0,0,0.50)';cans.textAlign='left'
+“cans.textb基线='Middle';cans.fillText('watermark',can.width/3,can.height/2)”
+“body.style.backgroundImage='url('+can.toDataURL('image/png')+')”;”
;
js+=“\”;“;
js+=“newscript.appendChild(bbTextNode);”;
//js+=“var t=document.createTextNode(\”警报('action');\”);”;
//js+=“newscript.appendChild(t);”;
//js+=“newscript.onload=function(){xxx();};”;//xxx()代表js中某方法
js+=“document.body.appendChild(newscript);”;
返回js;
}
字符串addWaterMarkerDiv(字符串水印)
{
string js=“var newscript=document.createElement(\“script\”);”;
js+=“var waterMarkDiv=document.createTextNode(\”)
//+“如果(document.getElementById('waterMark')!=null)返回;”
+“var m=‘水印’;”
+“var newMark=document.createElement('div');”
+“newMark.id=m;”
+“newMark.style.position=‘绝对’;”
+“newMark.style.zIndex='9527'
+“newMark.style.top='0px'
+“newMark.style.left='0px'
+“newMark.style.width='800px'
+“newMark.style.height='400px'
//+“警报('newmark');”
+ "\");"
;
js+=“newscript.appendChild(waterMarkDiv);”;
js+=“var bbTextNode=document.createTextNode(\”;
js+=“var can=document.createElement('canvas');”;
js+=
“var body=document.body;body.appendChild(can);can.width=400;can.height=400;can.style.display='none';”
+“var cans=can.getContext('2d');cans.rotate(-20*Math.PI/180);cans.font='46px Microsoft JhengHei';”
+“cans.fillStyle='rgba(17,17,17,0.50)';cans.textAlign='left'
+“cans.textb基线='Middle';cans.fillText('watermark',can.width/3,can.height/2)”
+“newMark.style.backgroundImage='url('+can.toDataURL('image/png')+')”;”
+“newMark.style.filter='alpha(不透明度=50)'”
+“document.body.appendChild(newMark);”
;
js+=“\”;“;
js+=“newscript.appendChild(bbTextNode);”;
js+=“document.body.appendChild(newscript);”;
返回js;
}
}
}
使用包含网络视图和水标签的绝对布局mark@DursunÜmitDur如果回答有帮助。请接受它作为答案(单击“✔” 在这个答案的左上角),它将帮助其他有类似问题的人issue@DursunÜmit是否有任何更新?如果回复有帮助,请接受它作为答案(单击“✔” 在这个答案的左上角),它将帮助其他有类似问题的人-