我使用WebView创建了一个使用Scala(Scaloid)的Android应用程序,它显示了我自己使用AngularJS制作的网页。
在我的WebView中,使用ng-repeat生成可单击的Svg元素。 问题是,当通过我的应用程序点击元素时,它会显示以下错误。
E / webcoreglue:不应该发生:没有找到基于矩阵的测试节点
我已经找到了与我类似的问题,比如
我还尝试使用...编写扩展的WebView类。
......但他们并不重要。 (在最后一种情况下,应用程序显示"错误膨胀类mypackage.SVGWebView")
虽然我在Chrome for Android中浏览该页面时效果非常好,但它并不在我的应用中。 有人可以告诉我怎么解决它? 我的源代码如下。
class SVGWebView(c:Context, attrs:AttributeSet, defStyle:Int) extends WebView(c,attrs,defStyle) { override def onTouchEvent(e: MotionEvent): Boolean = { if (e.getAction == MotionEvent.ACTION_DOWN){ val temp_ScrollY:Int = getScrollY scrollTo(getScrollX, getScrollY + 1) scrollTo(getScrollX, temp_ScrollY) } super.onTouchEvent(e) } }
onCreate { //Scaloid setContentView(R.layout.activity_main) val wv = find[SVGWebView](R.id.webView) wv.setWebViewClient(new WebViewClient { override def onPageFinished(v: WebView, url: String) { val p = find[RelativeLayout](R.id.loadingPanel) p.visibility(View.GONE) } }) wv.setVerticalScrollbarOverlay(true) wv.setInitialScale(1) val wvs = wv.getSettings wvs.setJavaScriptEnabled(true) wvs.setSupportZoom(false) wvs.setBuiltInZoomControls(false) wvs.setUseWideViewPort(true) wvs.setLoadWithOverviewMode(true) wv.loadUrl(home + "index.html?" + mySession.sessionId) wv.clearCache(true) wv.setWebChromeClient(new WebChromeClient(){ override def onConsoleMessage(cm:ConsoleMessage): Boolean = { Log.d("MainActivity", cm.message() + "--From line " + cm.lineNumber() + " of " + cm.sourceId()) true } }) }
<body ng-controller="container" onload="preload()"> <div id="container"> <svg ng-click="popDown($event)" id="map" viewBox="0 0 750 750" xmlns="http://www.w3.org/2000/svg"> <g ng-click="popUp($event);$event.stopPropagation();" id="{{item.id}}" ng-repeat="item in items" data-title="{{item.title}}" data-category="{{item.category}}"> <image xlink:href="foo.gif" ng-attr-x="{{x(item.appearance)}}" ng-attr-y="{{y(item.appearance)}}" height="60px" width="60px"/> <path ng-attr-d="{{d(item.appearance)}}" ng-attr-fill="{{fill(item.category, item.appearance.shape)}}" ng-attr-stroke="{{stroke(item.category, item.appearance.shape)}}" ng-attr-stroke-width="{{strokeWidth(item.appearance.shape)}}" /> </g> </svg> ... </div> </body>