Android :在文本视图中使用 JavaScript

Android : Use javascript in textview

本文关键字:JavaScript 视图 文本 Android      更新时间:2023-09-26

我有一个视图页机,每个页面都有一个文本视图,我在我的文本视图中解析了html文档(没有javascript),我在这个文档中有很多锚标签,我想在锚标签点击中调用JavaScript函数。例如

<a class="pginternal" tag="{http://www.w3.org/1999/xhtml}a" onclick="GoToPageNumber(186)" style="color:Blue !important;cursor:pointer !important;text-decoration:underline !important">THE VAMPIRE'S SIXTH STORY — In Which Three Men Dispute about a Woman.</a>

有"GoToPageNumber"事件,如何在单击此事件时更改寻呼机项目位置

我已经找到了解决方案。将移动方法设置为文本视图。

textview.setMovementMethod(LinkMovementMethodExt.getInstance());
public static class LinkMovementMethodExt extends LinkMovementMethod 
{
    private static LinkMovementMethod sInstance;
    public static MovementMethod getInstance()
    {
        if (sInstance == null)
        {
            sInstance = new LinkMovementMethodExt();
        }
        return sInstance;
    }
    int off = 0;
     @Override
     public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) 
     {
        int action = event.getAction();
        if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) 
        {
            try {
                int x = (int) event.getX();
                int y = (int) event.getY();
                x -= widget.getTotalPaddingLeft();
                y -= widget.getTotalPaddingTop();
                x += widget.getScrollX();
                y += widget.getScrollY();
                Layout layout = widget.getLayout();
                int currentLine = layout.getLineForVertical(y);
                int totalLine = layout.getLineCount();
                off = layout.getOffsetForHorizontal(currentLine, x);
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                URLSpan[] urls = buffer.getSpans(off, off+1, URLSpan.class);
                for(URLSpan span : urls) 
                {
                    String urlStr = span.getURL();
                    Log.v("URL SPAN", urlStr);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return true;
    }
}

你不能在 TextView 中运行 JavaScript。 您将不得不使用单击侦听器在 java 中执行所有操作。 如果您只想处理对 TextView 中链接的单击,则需要学习如何使用 Spannable。 您可以在此处获得帮助。