【问题标题】:How to get href links opens into webView when clicking from html string in android?从android中的html字符串单击时如何获取href链接打开到webView?
【发布时间】:2013-11-11 13:15:03
【问题描述】:

我正在将一个 html 字符串显示到一个包含一些链接的 textview 中,我在下面的代码的帮助下显示它:

itemContent.setText(Html.fromHtml(jo.getString("itemContent")));
                            itemContent.setMovementMethod(LinkMovementMethod.getInstance());

单击该链接会将我定向到 Web 浏览器并成功打开该链接,但我想将该链接打开到我的应用程序的 webView。我怎么能这样做?

【问题讨论】:

    标签: android webview


    【解决方案1】:

    是啊!!!最后我已经完成了我想要的。我使用webView 客户端来实现这一点。以下是我传递包含 url 的 html 字符串的方法:

    @SuppressLint("SetJavaScriptEnabled")
        private void loadWebView(WebView webView,String htmlString)
        {
         try {
    
                 final String mimeType = "text/html";
                 final String encoding = "UTF-8";
    
    
                    WebViewClient yourWebClient = new WebViewClient()
                    {
                        // Override page so it's load on my view only
                        @Override
                        public boolean shouldOverrideUrlLoading(WebView  view, String  url)
                        {
                         // This line we let me load only pages inside  Webpage
                         if ( url.contains("") == true )
                            // Load new URL Don't override URL Link
                            return false;
    
                         // Return true to override url loading (In this case do nothing).
                         return true;
                        }
                    };
    
    
                    // Get Web view
                    webView.getSettings().setJavaScriptEnabled(true);   
                    webView.getSettings().setSupportZoom(true);       //Zoom Control on web (You don't need this 
                                                           //if ROM supports Multi-Touch      
                    webView.getSettings().setBuiltInZoomControls(true); //Enable Multitouch if supported by ROM
                    webView.setWebViewClient(yourWebClient);
    
                    // Load URL
                    webView.loadDataWithBaseURL("", htmlString, mimeType, encoding, "");
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    

    【讨论】:

      【解决方案2】:

      不要使用默认的 LinkMovementMethod,而是自己实现...

      itemContent.setMovementMethod(new MovementMethod() {
      
              @Override
              public boolean onTrackballEvent(TextView widget, Spannable text,
                      MotionEvent event) {
                  // TODO: Do here what you want
                  return false;
              }
      
              @Override
              public boolean onTouchEvent(TextView widget, Spannable text,
                      MotionEvent event) {
                  // TODO: Do here what you want
                  return false;
              }
      
              @Override
              public void onTakeFocus(TextView widget, Spannable text, int direction) {
                  // TODO: Do here what you want
      
              }
      
              @Override
              public boolean onKeyUp(TextView widget, Spannable text, int keyCode,
                      KeyEvent event) {
                  // TODO: Do here what you want
                  return false;
              }
      
              @Override
              public boolean onKeyOther(TextView view, Spannable text, KeyEvent event) {
                  // TODO: Do here what you want
                  return false;
              }
      
              @Override
              public boolean onKeyDown(TextView widget, Spannable text, int keyCode,
                      KeyEvent event) {
                  // TODO: Do here what you want
                  return false;
              }
      
              @Override
              public boolean onGenericMotionEvent(TextView widget, Spannable text,
                      MotionEvent event) {
                  // TODO: Do here what you want
                  return false;
              }
      
              @Override
              public void initialize(TextView widget, Spannable text) {
                  // TODO: Do here what you want
      
              }
      
              @Override
              public boolean canSelectArbitrarily() {
                  // TODO: Do here what you want
                  return false;
              }
          });
      

      请参阅文档HERE 以找到其中最适合您的方法...:)

      希望这会有所帮助...

      【讨论】:

        【解决方案3】:

        我要解决的方法是将textview的文本设置为url,然后点击使用

        myWebView.loadUrl(tV.getText().toString());
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-04-28
          • 1970-01-01
          • 2021-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-23
          相关资源
          最近更新 更多