无法在Android WebView(Scaloid& AngularJS)中单击SVG路径

时间:2014-12-17 06:07:23

标签: android angularjs scala svg webview

我使用WebView创建了一个使用Scala(Scaloid)的Android应用程序,它显示了我自己使用AngularJS制作的网页。

在我的WebView中,使用ng-repeat生成可单击的Svg元素。 问题是,当通过我的应用程序点击元素时,它会显示以下错误。

  

E / webcoreglue:不应该发生:没有找到基于矩阵的测试节点

我已经找到了与我类似的问题,比如

我还尝试使用...编写扩展的WebView类。

......但他们并不重要。 (在最后一种情况下,应用程序显示"错误膨胀类mypackage.SVGWebView")


虽然我在Chrome for Android中浏览该页面时效果非常好,但它并不在我的应用中。 有人可以告诉我怎么解决它? 我的源代码如下。

SVGWebView.scala


    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)
    }
    }

MainActivity.scala


    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
         }
       })
     }

的index.html


    <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>


0 个答案:

没有答案