3

我有一个带有 webview 的小型 android 应用程序。在 android 2.2、2.3 中,我可以使用 findAll 在这个 webview 上执行搜索,效果很好,突出显示正在搜索的单词并滚动到匹配的位置。

在 android 4.0.X 中,搜索工作和滚动正常,但没有突出显示(使用 findAll)。

在 android 4.1 中,使用 findAll 或 findAllAsync 并不重要,搜索根本无法正常工作。在我的测试中,它执行搜索,但不滚动到匹配的位置,而是返回到页面顶部,这很荒谬。它甚至可以突出显示匹配,但如果不转到 webview 上的位置,从可用性的角度来看,它和无用一样好。

以下是源代码:

//////////////////////////////
// for android 2.2, 2.3, 4.0.x
//////////////////////////////
myContent.findAll(findBox.getText().toString());
try{
    //Can't use getMethod() in android 4.0.3 as it's a private method
    for(Method m : WebView.class.getDeclaredMethods()){
        if(m.getName().equals("setFindIsUp")){
            m.setAccessible(true);
            m.invoke(myContent, true);
            break;
        }
    }
}catch(Exception ignored){}

然后,使用目标 api 16 的另一种方法:

/////////////////////////////
// for android 4.1
/////////////////////////////
myContent.findAllAsync(findBox.getText().toString());
try{
    //Can't use getMethod() in android 4.0.3 as it's a private method
    for(Method m : WebView.class.getDeclaredMethods()){
        if(m.getName().equals("setFindIsUp")){
            m.setAccessible(true);
            m.invoke(myContent, true);
            break;
        }
    }
}catch(Exception ignored){}

关于如何在果冻豆上进行搜索的任何想法?非常感谢。

4

0 回答 0