`
jiayanjujyj
  • 浏览: 198440 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android Webview 高亮的一些问题

阅读更多

今天帮同事看了一个在android的webview中查找keyword然后高亮显示的问题,查看API发现webview已经提供了findAll的函数,ok,那就写一下试试,代码如下:

 
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        editText = new EditText(this);
        button = new Button(this);
        button.setText("Search");
        webView = new WebView(this);
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);

        layout.addView(editText);
        layout.addView(button);
        layout.addView(webView);

        setContentView(layout);

        String content = "<html><body><div>Hello Web view, this is my first web view</div></body></html>";

        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadData(content, "text/html", "utf-8");

        button.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                String keyWord = editText.getText().toString();
                webView.findAll(keyWord);
            }
        });

 

但是运行之后发现不好使,google了一下,发现可能是一个bug,网上说还需要如下设置(服了google了)

try
        {
            Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
            m.invoke(webView, true);
        }
        catch (Throwable ignored){}

 

这次终于好使了,高兴中。。。,然而同事说如果不用button,在页面load出来后,直接高亮keyword怎么样,我以为没问题但结果杯具了

        webView.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageFinished(WebView view, String url) {
                String keyWord = "view";
                view.findAll(keyWord);
            }
        });

 

这样竟然不好使。。。(泪流满面啊)

 

竟然数次的测试和调试,终于发现这样是好使的:

 

webView.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageFinished(WebView view, String url) {

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                String keyWord = "view";
                view.findAll(keyWord);
            }
        });

 

唉,无语啊。看来可能是和底层的解析渲染执行有关,等有时间看看代码到底是怎么回事。

 

0
3
分享到:
评论

相关推荐

    通过css注入实现android webview的夜间模式

    这个样式表通常会包含一些全局的暗色背景和高亮文字的颜色,以便在低光环境下提供更好的阅读体验。例如: ```css body { background-color: #282c34; color: #c5c8c6; } a { color: #61dafb; } ``` 然后,在...

    android 代码高亮 syntaxHighlighter

    5. **性能优化**:在Android应用中使用WebView加载大量代码可能会导致性能问题,因此可以考虑预处理代码,提前生成高亮后的HTML,减少WebView的实时处理负担。 6. **兼容性问题**:不同的Android版本对WebView的...

    Android BTAndroidWebViewSelection(webview选择文字).zip

    总之,“Android BTAndroidWebViewSelection”项目揭示了如何在Android应用中自定义Webview的文字选择功能,同时也展示了Android开发中Webview的一些关键技术和最佳实践。通过这个项目,开发者可以学习到如何增强...

    Android-MarkdownView-支持Markdown渲染的WebView实现

    4. **扩展功能**:除了基本的Markdown语法支持,一些MarkdownView实现还可能包含额外的功能,如表格支持、代码高亮、内联图片预览、链接点击事件处理等。 5. **性能优化**:由于Markdown解析和HTML渲染都需要计算...

    Android-FlexibleRichTextView可以显示LaTeX图片代码的TextView

    代码的展示部分,`FlexibleRichTextView`可能采用代码高亮库,如`Highlight.js`或`Android Studio`自带的`KotlinPoet`,以确保代码的可读性和美观性。开发者可以选择不同的编程语言,并根据需要设置行号、复制功能...

    安卓Android源码——BTAndroidWebViewSelection(webview选择文字).rar

    【Android WebView选择文字详解】 在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用程序中内嵌网页内容。这个项目“BTAndroidWebViewSelection”专注于WebView中的文本选择功能,这在许多应用...

    CodeView:android代码高亮

    english version : CodeView CodeView 是一个能显示代码,并且能够进行代码高亮的一个控件。 这里是通过hightlight.js 渲染代码,可以自动识别主流的各种语言 比如java,c++,c#,python,bash,ruby。... android

    安卓Android源码——BTAndroidWebViewSelection(webview选择文字).zip

    - 使用`android.graphics.Rect`对象记录选区的边界,根据边界绘制高亮背景,模拟选择效果。 - 实现复制、剪切、粘贴等操作,通过`WebView.copySelection()`、`WebView.cutSelection()`和`WebView.paste()`接口。 ...

    BTAndroidWebViewSelection(webview选择文字)

    `BTAndroidWebViewSelection` 是一个专门针对WebView文字选择功能的开源项目,提供了对WebView内文本的高亮、复制、分享等操作的支持。这个项目对于那些希望增强其应用程序内WebView交互性的开发者来说,具有很高的...

    BTWebViewSelection(webview选择文字).zip

    在Android开发中,Webview是一个非常重要的组件,它允许开发者在应用程序中内嵌网页内容,实现与网页的交互。`BTWebViewSelection(webview选择文字)`是一个针对Android Webview的特定功能模块,主要涉及用户在...

    BTAndroidWebViewSelection(webview选择文字)安卓源码.7z

    在Android开发中,WebView是一个内置组件,用于加载和展示网页内容,但默认的WebView在文字选择方面可能较为简单,无法满足某些高级需求。此开源项目则对此进行了优化,提供了更多的定制化选项。 首先,让我们深入...

    Android应用源码之BTAndroidWebViewSelection(webview选择文字_选择.zip

    在Android开发中,Webview是一个非常重要的组件,它允许我们加载和显示网页内容。`BTAndroidWebViewSelection`项目是专门针对Webview中的文字选择和处理功能进行优化的一个示例。这个开源代码库提供了对Webview内...

    多个Frament内嵌套WebView以及返回键监听(附带底部Menu的SelectUI变化)

    `WebView`是Android系统提供的一个用于加载和显示网页的组件。它可以处理复杂的HTML、CSS和JavaScript代码,使得原生应用能够展示丰富的网络内容。在这个项目中,`WebView`可能被用来加载店铺的静态网页或者动态的...

    应用源码之BTWebViewSelection(webview选择文字.zip

    《Android应用源码解析:BTWebViewSelection(Webview选择文字)》 在移动开发领域,尤其是在Android平台上,WebView是一个至关重要的组件,它允许我们在应用程序中嵌入网页内容,实现与网页的交互。本篇将深入解析...

    一个算是比较完整的android MP3 LRC歌词滚动高亮显示

    Android提供了多种方式来显示歌词,比如TextView、WebView或者自定义View。在这个案例中,我们可能需要自定义一个View来实现滚动和高亮效果。这个自定义View需要监听MP3播放器的进度,并根据当前播放时间找到对应的...

    Android Studio使用教程.pdf

    Android Studio 是Google官方推出的专为Android应用开发设计的集成开发环境(IDE),它基于IntelliJ IDEA,提供了丰富的工具和功能来帮助开发者高效地构建、测试和发布Android应用。本教程将详细介绍如何使用Android ...

    Codeview:Codeview是一个Android库,可让您通过高亮和颜色非常轻松地预览Webview中的代码

    Codeview是一个Android库,可让您通过高亮和彩色非常轻松地在Webview中预览代码。 具有样式和语言选择。 您也可以将html和文本注入到webview或任何扩展的webview类中。 该库的启发,并正在努力感谢 。 使用Code...

    安卓条码扫描二维码相关-二维码扫描并加载到webview.zip

    4. **Webview加载网页**:接收到URL后,可以使用Android内置的Webview组件加载该网页。首先,创建一个Webview实例,设置必要的属性如JavaScript支持,然后调用`loadUrl()`方法加载URL。为了提升用户体验,可以考虑...

Global site tag (gtag.js) - Google Analytics